<?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>84004</bug_id>
          
          <creation_ts>2012-04-15 18:30:35 -0700</creation_ts>
          <short_desc>DFG should have constant propagation</short_desc>
          <delta_ts>2012-05-18 14:47:43 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602838</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-15 18:30:35 -0700</bug_when>
    <thetext>This will take Effort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602840</commentid>
    <comment_count>1</comment_count>
      <attachid>137262</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-15 18:36:27 -0700</bug_when>
    <thetext>Created attachment 137262
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602867</commentid>
    <comment_count>2</comment_count>
      <attachid>137270</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-15 20:33:18 -0700</bug_when>
    <thetext>Created attachment 137270
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604568</commentid>
    <comment_count>3</comment_count>
      <attachid>137649</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-17 20:44:45 -0700</bug_when>
    <thetext>Created attachment 137649
the patch

I think it works</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604571</commentid>
    <comment_count>4</comment_count>
      <attachid>137649</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-17 21:00:15 -0700</bug_when>
    <thetext>Comment on attachment 137649
the patch

Attachment 137649 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12426110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604573</commentid>
    <comment_count>5</comment_count>
      <attachid>137649</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-04-17 21:03:36 -0700</bug_when>
    <thetext>Comment on attachment 137649
the patch

Attachment 137649 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12423620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604576</commentid>
    <comment_count>6</comment_count>
      <attachid>137651</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-17 21:11:03 -0700</bug_when>
    <thetext>Created attachment 137651
the patch

Found and fixed a few bugs.

Also added build foo for the non-Mac ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604578</commentid>
    <comment_count>7</comment_count>
      <attachid>137652</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-17 21:13:36 -0700</bug_when>
    <thetext>Created attachment 137652
the patch

accidentally messed up GNUmakefile.list.am.  fix in this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604618</commentid>
    <comment_count>8</comment_count>
      <attachid>137658</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-18 00:18:14 -0700</bug_when>
    <thetext>Created attachment 137658
the patch

Fixed two hilarious bugs that this patch introduced:

- LogicalNot(foo) is not an integer.  Really, it isn&apos;t.  In fact, it&apos;s a boolean.  Imagine that.

- Don&apos;t replace JSConstant or WeakJSConstant with JSConstant, because at best that&apos;s a waste of CPU cycles and at worst, it&apos;s just plain wrong (WeakJSConstant should not be coerced into a JSConstant).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605056</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-04-18 13:47:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/114554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628102</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-18 14:47:43 -0700</bug_when>
    <thetext>Merged in http://trac.webkit.org/changeset/117636</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137262</attachid>
            <date>2012-04-15 18:36:27 -0700</date>
            <delta_ts>2012-04-15 20:33:18 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>constprop_patch_1.diff</filename>
            <type>text/plain</type>
            <size>13076</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTA0LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjppc0NsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjptYWtlVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjbG9iYmVy
VmFsdWUpOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6dmFsdWVJc1RvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6dmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRh
dGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3kp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNC
bG9jayk6CisgICAgICAgIChCYXNpY0Jsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMi0wNC0xMyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjExNDE4NS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNiArOTEsNyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpCiAg
ICAgYmFzaWNCbG9jay0+Y2ZhSGFzVmlzaXRlZCA9IHRydWU7CiAgICAgbV9ibG9jayA9IGJhc2lj
QmxvY2s7CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7CiB9CiAKIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCkBA
IC0xNTcsNiArMTU4LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdl
TQogICAgIAogICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9jazsgLy8gU2F2ZSB0aGUgYmxv
Y2sgZm9yIHN1Y2Nlc3NvciBtZXJnaW5nLgogICAgIAorICAgIGJsb2NrLT5jZmFGb3VuZENvbnN0
YW50cyA9IG1fZm91bmRDb25zdGFudHM7CisgICAgCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKICAg
ICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc3LDEzICsyODAsNTEg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgQml0
WG9yOgogICAgIGNhc2UgQml0UlNoaWZ0OgogICAgIGNhc2UgQml0TFNoaWZ0OgotICAgIGNhc2Ug
Qml0VVJTaGlmdDoKKyAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0
ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0
ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMyKCkpIHsKKyAgICAgICAgICAg
IGludDMyX3QgYSA9IGxlZnQuYXNJbnQzMigpOworICAgICAgICAgICAgaW50MzJfdCBiID0gcmln
aHQuYXNJbnQzMigpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgQml0QW5kOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShhICYgYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBCaXRPcjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUo
YSB8IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0WG9y
OgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIF4gYikp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRSU2hpZnQ6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgPj4gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEJpdExTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KEpTVmFsdWUoYSA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0VVJTaGlmdDoKKyAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpID4+
IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVk
aWN0SW50MzIpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVUlu
dDMyVG9OdW1iZXI6CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoY2hpbGQuaXNJbnQzMigpKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoSlNWYWx1ZShjaGlsZC5hc1VJbnQzMigpKSk7CisgICAgICAgICAgICBt
X2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGlmICghbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBlbHNlCkBAIC0yOTEs
NiArMzMyLDE1IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAg
ICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAg
ICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGls
ZC5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChjaGls
ZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChKU1ZhbHVlKEpTQzo6dG9JbnQzMihjaGlsZC5hc0RvdWJsZSgpKSkpOworICAgICAgICAg
ICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
SW50MzIpOwogICAgICAgICBlbHNlIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZU51bWJlcigpKQpAQCAtMzAyLDEyICszNTIsMjQgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2Fz
ZSBJbnQzMlRvRG91YmxlOgorICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKEpTVmFsdWU6OkVu
Y29kZUFzRG91YmxlLCBjaGlsZC5hc051bWJlcigpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOwogICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogeworICAgICAg
ICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigp
KSB7CisgICAgICAgICAgICAvLyBGSVhNRQorICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9
IHRydWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRl
SW50ZWdlcihub2RlKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmls
dGVyKFByZWRpY3RJbnQzMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODks
NyBAQCBwcml2YXRlOgogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fdmFyaWFibGVzOwog
ICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2hhdmVTdHJ1Y3R1cmVzOworICAg
IGJvb2wgbV9mb3VuZENvbnN0YW50czsKICAgICAKICAgICBib29sIG1faXNWYWxpZDsKIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2
aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNywxMCArMzE3LDExIEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICB7CiAgICAgICAgIG1fdHlwZSA9IFByZWRpY3ROb25lOwogICAgICAgICBt
X3N0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNDbGVhcigpCisg
ICAgYm9vbCBpc0NsZWFyKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0g
UHJlZGljdE5vbmUgJiYgbV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgIH0KQEAgLTMyOSw2ICsz
MzAsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgewogICAgICAgICBtX3R5cGUgPSBQ
cmVkaWN0VG9wOwogICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgIG1fdmFs
dWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAg
CkBAIC0zNDEsMTEgKzM0MywyNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNo
ZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbG9iYmVyVmFsdWUoKQor
ICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKKyAgICB9CisgICAgCiAgICAgYm9v
bCBpc1RvcCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IFByZWRpY3RU
b3AgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCB2YWx1ZUlz
VG9wKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92YWx1ZSAmJiBtX3R5cGU7Cisg
ICAgfQorICAgIAorICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBBYnN0cmFjdFZhbHVlIHRvcCgp
CiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKQEAgLTM1NSwxMSArMzcyLDEz
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lkIHNldChKU1ZhbHVlIHZh
bHVlKQogICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgaWYgKHZh
bHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuYWRkKHZhbHVlLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIAogICAg
ICAgICBtX3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgbV92YWx1
ZSA9IHZhbHVlOwogICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0K
QEAgLTM3MCw2ICszODksNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1fc3Ry
dWN0dXJlLmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAgbV90eXBlID0gcHJlZGlj
dGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUo
KTsKICAgICAgICAgCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC0zODEs
MTcgKzQwMSwyNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fdHlwZSA9IHR5cGU7CisgICAg
ICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVy
KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYg
bV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBtX3R5cGUg
PT0gb3RoZXIubV90eXBlCisgICAgICAgICAgICAmJiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0
cnVjdHVyZQorICAgICAgICAgICAgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwogICAgIH0K
ICAgICAKICAgICBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKQogICAgIHsK
LSAgICAgICAgYm9vbCByZXN1bHQgPSBtZXJnZVByZWRpY3Rpb24obV90eXBlLCBvdGhlci5tX3R5
cGUpIHwgbV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0dXJlKTsKKyAgICAgICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0IHw9IG1lcmdlUHJlZGljdGlvbihtX3R5
cGUsIG90aGVyLm1fdHlwZSk7CisgICAgICAgIHJlc3VsdCB8PSBtX3N0cnVjdHVyZS5hZGRBbGwo
b3RoZXIubV9zdHJ1Y3R1cmUpOworICAgICAgICBpZiAobV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVl
KQorICAgICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0
ZW5jeSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQwMiw2ICs0MjksNyBA
QCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIAogICAgICAgICBpZiAodHlwZSAmIFBy
ZWRpY3RDZWxsKQogICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBt
X3ZhbHVlID0gSlNWYWx1ZSgpOwogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9
CkBAIC00MTcsNiArNDQ1LDEwIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8g
c3VyZSB0aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFByZWRpY3RlZFR5cGUg
bmVlZHMgdG8gYmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xl
YW5lZCBmcm9tIHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1fc3RydWN0dXJlLmZpbHRlciht
X3R5cGUpOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiAhdmFsaWRhdGUobV92
YWx1ZSkpCisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAKICAgICAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgIH0KICAgICAKQEAgLTQzMSw2ICs0NjMsMTAgQEAgc3RydWN0IEFic3Ry
YWN0VmFsdWUgewogICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIGZpbHRl
cmluZyBkb2VzIHRoZSByaWdodCB0aGluZyBpcyB0byBmaWx0ZXIgb24KICAgICAgICAgLy8gdGhl
IG5ldyB0eXBlIChOb25lKSByYXRoZXIgdGhhbiB0aGUgb25lIHBhc3NlZCAoQXJyYXkpLgogICAg
ICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKworICAgICAgICBpZiAoISFtX3ZhbHVl
ICYmICF2YWxpZGF0ZShtX3ZhbHVlKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAog
ICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIApAQCAtNDM5LDYgKzQ3NSw5
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCisgICAgICAgIGlmICghIW1fdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSB2YWx1ZTsKKyAgICAgICAgCiAgICAgICAgIGlmICht
ZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1f
dHlwZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC00NjMsNiArNTAy
LDEyIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKCEobV90eXBlICYgUHJl
ZGljdENlbGwpKQogICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLmlzQ2xlYXIoKSk7CiAg
ICAgICAgIAorICAgICAgICBpZiAoaXNDbGVhcigpKQorICAgICAgICAgICAgQVNTRVJUKCFtX3Zh
bHVlKTsKKyAgICAgICAgCisgICAgICAgIGlmICghIW1fdmFsdWUpCisgICAgICAgICAgICBBU1NF
UlQobWVyZ2VQcmVkaWN0aW9ucyhtX3R5cGUsIHByZWRpY3Rpb25Gcm9tVmFsdWUobV92YWx1ZSkp
ID09IG1fdHlwZSk7CisgICAgICAgIAogICAgICAgICAvLyBOb3RlIHRoYXQgaXQncyBwb3NzaWJs
ZSBmb3IgYSBwcmVkaWN0aW9uIGxpa2UgKEZpbmFsLCBbXSkuIFRoaXMgcmVhbGx5IG1lYW5zIHRo
YXQKICAgICAgICAgLy8gdGhlIHZhbHVlIGlzIGJvdHRvbSBhbmQgdGhhdCBhbnkgY29kZSB0aGF0
IHVzZXMgdGhlIHZhbHVlIGlzIHVucmVhY2hhYmxlLiBCdXQKICAgICAgICAgLy8gd2UgZG9uJ3Qg
d2FudCB0byBnZXQgcGVkYW50aWMgYWJvdXQgdGhpcyBhcyBpdCB3b3VsZCBvbmx5IGluY3JlYXNl
IHRoZSBjb21wdXRhdGlvbmFsCkBAIC00NzMsMTEgKzUxOCwxNCBAQCBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgewogICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwgcHJlZGljdGlvblRv
U3RyaW5nKG1fdHlwZSkpOwogICAgICAgICBtX3N0cnVjdHVyZS5kdW1wKG91dCk7CisgICAgICAg
IGlmICghIW1fdmFsdWUpCisgICAgICAgICAgICBmcHJpbnRmKG91dCwgIiwgJXMiLCBtX3ZhbHVl
LmRlc2NyaXB0aW9uKCkpOwogICAgICAgICBmcHJpbnRmKG91dCwgIikiKTsKICAgICB9CiAKICAg
ICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIG1fc3RydWN0dXJlOwogICAgIFByZWRpY3RlZFR5cGUg
bV90eXBlOworICAgIEpTVmFsdWUgbV92YWx1ZTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCShy
ZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6
IFZlY3RvcjxOb2RlSW5kZXgsIDg+CiAgICAgICAgICwgaXNPU1JUYXJnZXQoZmFsc2UpCiAgICAg
ICAgICwgY2ZhSGFzVmlzaXRlZChmYWxzZSkKICAgICAgICAgLCBjZmFTaG91bGRSZXZpc2l0KGZh
bHNlKQorICAgICAgICAsIGNmYUZvdW5kQ29uc3RhbnRzKGZhbHNlKQogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAgICAgLCBpc0xpbmtlZChmYWxzZSkKICNlbmRpZgpAQCAtNzAsNiArNzEsNyBA
QCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFZlY3RvcjxOb2RlSW5kZXgsIDg+CiAgICAgYm9vbCBpc09T
UlRhcmdldDsKICAgICBib29sIGNmYUhhc1Zpc2l0ZWQ7CiAgICAgYm9vbCBjZmFTaG91bGRSZXZp
c2l0OworICAgIGJvb2wgY2ZhRm91bmRDb25zdGFudHM7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIGJvb2wgaXNMaW5rZWQ7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3
IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICByZXR1cm47
CiB9CiAKLWNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKK2NoYXIqIEpTVmFsdWU6OmRlc2Ny
aXB0aW9uKCkgY29uc3QKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAg
ICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSAgICAgICAg
Y2hhciogZGVzY3JpcHRpb24oKTsKKyAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsK
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlw
ZShFeGVjU3RhdGUqKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137270</attachid>
            <date>2012-04-15 20:33:18 -0700</date>
            <delta_ts>2012-04-17 20:44:45 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>constprop_patch_2.diff</filename>
            <type>text/plain</type>
            <size>25642</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MjE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBA
CisyMDEyLTA0LTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKwor
ICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmg6CisgICAgICAg
IChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNsZWFyKToKKyAgICAgICAgKEpTQzo6REZH
OjpBYnN0cmFjdFZhbHVlOjppc0NsZWFyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjptYWtlVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjbG9iYmVy
VmFsdWUpOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RWYWx1ZTo6dmFsdWVJc1RvcCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6dmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2UpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRh
dGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3kp
OgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAqIGRm
Zy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNC
bG9jayk6CisgICAgICAgIChCYXNpY0Jsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUu
Y3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAxMi0wNC0xMyAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjExNDE4NS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTEsNiArOTEsNyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpCiAg
ICAgYmFzaWNCbG9jay0+Y2ZhSGFzVmlzaXRlZCA9IHRydWU7CiAgICAgbV9ibG9jayA9IGJhc2lj
QmxvY2s7CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZvdW5kQ29uc3RhbnRzID0gZmFs
c2U7CiB9CiAKIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCkBA
IC0xNTcsNiArMTU4LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdl
TQogICAgIAogICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9jazsgLy8gU2F2ZSB0aGUgYmxv
Y2sgZm9yIHN1Y2Nlc3NvciBtZXJnaW5nLgogICAgIAorICAgIGJsb2NrLT5jZmFGb3VuZENvbnN0
YW50cyA9IG1fZm91bmRDb25zdGFudHM7CisgICAgCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKICAg
ICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjc3LDEzICsyODAsNTEg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgQml0
WG9yOgogICAgIGNhc2UgQml0UlNoaWZ0OgogICAgIGNhc2UgQml0TFNoaWZ0OgotICAgIGNhc2Ug
Qml0VVJTaGlmdDoKKyAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0
ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0
ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiBy
aWdodCAmJiBsZWZ0LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMyKCkpIHsKKyAgICAgICAgICAg
IGludDMyX3QgYSA9IGxlZnQuYXNJbnQzMigpOworICAgICAgICAgICAgaW50MzJfdCBiID0gcmln
aHQuYXNJbnQzMigpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgQml0QW5kOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShhICYgYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBCaXRPcjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUo
YSB8IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0WG9y
OgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIF4gYikp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRSU2hpZnQ6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgPj4gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEJpdExTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KEpTVmFsdWUoYSA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0VVJTaGlmdDoKKyAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpID4+
IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVk
aWN0SW50MzIpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVUlu
dDMyVG9OdW1iZXI6CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoY2hpbGQuaXNJbnQzMigpKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoSlNWYWx1ZShjaGlsZC5hc1VJbnQzMigpKSk7CisgICAgICAgICAgICBt
X2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGlmICghbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBlbHNlCkBAIC0yOTEs
NiArMzMyLDE1IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICAg
ICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAg
ICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGlmIChjaGls
ZC5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChjaGls
ZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChKU1ZhbHVlKEpTQzo6dG9JbnQzMihjaGlsZC5hc0RvdWJsZSgpKSkpOworICAgICAgICAg
ICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKCkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
SW50MzIpOwogICAgICAgICBlbHNlIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZU51bWJlcigpKQpAQCAtMzAyLDEyICszNTIsMjUgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2Fz
ZSBJbnQzMlRvRG91YmxlOgorICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKEpTVmFsdWU6OkVu
Y29kZUFzRG91YmxlLCBjaGlsZC5hc051bWJlcigpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOwogICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogeworICAgICAg
ICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigp
KSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUobGVmdC5hc051
bWJlcigpICsgcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50
cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9n
cmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTMzMSw2ICszOTQs
MTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIH0KICAg
ICAgICAgICAgIAogICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0g
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0g
Zm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdo
dCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFz
TnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIo
KSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBAIC0zNDQsNiArNDE0LDEyIEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
QXJpdGhOZWdhdGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGls
ZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZSgtY2hpbGQuYXNOdW1i
ZXIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChQcmVkaWN0SW50MzIpOwpAQCAtMzU5LDYgKzQzNSwzNCBAQCBib29sIEFic3RyYWN0U3RhdGU6
OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBBcml0aE1pbjoKICAgICBjYXNlIEFyaXRo
TWF4OgogICAgIGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9k
ZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBs
ZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZG91Ymxl
IGEgPSBsZWZ0LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVt
YmVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2Fz
ZSBBcml0aE11bDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFs
dWUoYSAqIGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJp
dGhEaXY6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEg
LyBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFyaXRoTWlu
OgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIDwgYiA/
IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KEpTVmFsdWUoYSA+IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBhICsgYikpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhNb2Q6CisgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGZtb2QoYSwgYikpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pICYmIG5vZGUu
Y2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTM3Miw2ICs0NzYsMTIgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIH0KICAgICAgICAgICAgIAogICAg
IGNhc2UgQXJpdGhBYnM6CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoZmFicyhjaGlsZC5h
c051bWJlcigpKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2Vy
KCkpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJ
bnQzMik7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7
CkBAIC0zODIsMTEgKzQ5MiwzMCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBBcml0aFNxcnQ6
CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoc3FydChjaGlsZC5hc051bWJlcigpKSkpOwor
ICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
TnVtYmVyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKKyAg
ICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAg
ICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQuaXNOdW1iZXIoKSkgewor
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZSghY2hpbGQuYXNO
dW1iZXIoKSkpOworICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoaWxk
LmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChK
U1ZhbHVlKCFjaGlsZC5hc0Jvb2xlYW4oKSkpOworICAgICAgICAgICAgICAgIG1fZm91bmRDb25z
dGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAgICAgICAgIE5vZGUmIGNoaWxkID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXTsKICAg
ICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24oY2hpbGQucHJlZGljdGlvbigpKSkKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RCb29sZWFuKTsKQEAg
LTQxMCw2ICs1MzksMzMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZAogICAgIGNhc2UgSXNTdHJpbmc6CiAgICAgY2FzZSBJc09iamVjdDoKICAgICBjYXNlIElzRnVu
Y3Rpb246IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSku
dmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkKSB7CisgICAgICAgICAgICBib29sIGZvdW5kQ29u
c3RhbnQgPSB0cnVlOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAg
ICAgIGNhc2UgSXNVbmRlZmluZWQ6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChqc0Jvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNoaWxkLmlzQ2VsbCgpCisgICAg
ICAgICAgICAgICAgICAgID8gY2hpbGQuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKQorICAgICAgICAgICAgICAgICAgICA6IGNoaWxkLmlz
VW5kZWZpbmVkKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
SXNCb29sZWFuOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29s
ZWFuKGNoaWxkLmlzQm9vbGVhbigpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIElzTnVtYmVyOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoanNCb29sZWFuKGNoaWxkLmlzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSXNTdHJpbmc6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChqc0Jvb2xlYW4oaXNKU1N0cmluZyhjaGlsZCkpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm91bmRDb25zdGFudCkgeworICAgICAgICAg
ICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdEJvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC00MTksNiArNTc1LDM1
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIENv
bXBhcmVHcmVhdGVyOgogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKICAgICBjYXNlIENvbXBh
cmVFcTogeworICAgICAgICBKU1ZhbHVlIGxlZnRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDEo
KSkudmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSByaWdodENvbnN0ID0gZm9yTm9kZShub2RlLmNo
aWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdENvbnN0ICYmIHJpZ2h0Q29uc3QgJiYg
bGVmdENvbnN0LmlzTnVtYmVyKCkgJiYgcmlnaHRDb25zdC5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICBkb3VibGUgYSA9IGxlZnRDb25zdC5hc051bWJlcigpOworICAgICAgICAgICAgZG91Ymxl
IGIgPSByaWdodENvbnN0LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3Ao
KSkgeworICAgICAgICAgICAgY2FzZSBDb21wYXJlTGVzczoKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhIDwgYikpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBDb21wYXJlTGVzc0VxOgorICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGEgPD0gYikpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKKyAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhID4gYikpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgorICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGEgPj0gYikpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb21wYXJlRXE6CisgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc2Jvb2xlYW4oYSA9PSBiKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQ
cmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIAogICAgICAgICBOb2RlJiBsZWZ0ID0gbV9ncmFwaFtu
b2RlLmNoaWxkMSgpXTsKQEAgLTQ3MSw2ICs2NTYsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlKHVuc2lnbmVkIGluZAogICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgQ29tcGFy
ZVN0cmljdEVxOgorICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkp
LnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAm
JiByaWdodC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KGpzQm9vbGVhbihsZWZ0LmFzTnVtYmVyKCkgPT0gcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAg
ICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RCb29sZWFuKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIApAQCAtNzIxLDYgKzkxMywxMyBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgY2FzZSBUb1ByaW1pdGl2ZTogeworICAgICAgICBKU1ZhbHVlIGNoaWxkQ29uc3QgPSBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZENvbnN0ICYm
IGNoaWxkQ29uc3QuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChjaGlsZENvbnN0KTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIE5vZGUmIGNo
aWxkID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXTsKICAgICAgICAgaWYgKGNoaWxkLnNob3VsZFNw
ZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4
OSw3IEBAIHByaXZhdGU6CiAgICAgT3BlcmFuZHM8QWJzdHJhY3RWYWx1ZT4gbV92YXJpYWJsZXM7
CiAgICAgQmFzaWNCbG9jayogbV9ibG9jazsKICAgICBib29sIG1faGF2ZVN0cnVjdHVyZXM7Cisg
ICAgYm9vbCBtX2ZvdW5kQ29uc3RhbnRzOwogICAgIAogICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShy
ZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDEwICszMTcsMTEgQEAgc3RydWN0IEFic3Ry
YWN0VmFsdWUgewogICAgIHsKICAgICAgICAgbV90eXBlID0gUHJlZGljdE5vbmU7CiAgICAgICAg
IG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0NsZWFyKCkK
KyAgICBib29sIGlzQ2xlYXIoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdHlwZSA9
PSBQcmVkaWN0Tm9uZSAmJiBtX3N0cnVjdHVyZS5pc0NsZWFyKCk7CiAgICAgfQpAQCAtMzI5LDYg
KzMzMCw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7CiAgICAgICAgIG1fdHlwZSA9
IFByZWRpY3RUb3A7CiAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKKyAgICAgICAgbV92
YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAg
ICAKQEAgLTM0MSwxMSArMzQzLDI2IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNsb2JiZXJWYWx1ZSgp
CisgICAgeworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOworICAgIH0KKyAgICAKICAgICBi
b29sIGlzVG9wKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gUHJlZGlj
dFRvcCAmJiBtX3N0cnVjdHVyZS5pc1RvcCgpOwogICAgIH0KICAgICAKKyAgICBib29sIHZhbHVl
SXNUb3AoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlICYmIG1fdHlwZTsK
KyAgICB9CisgICAgCisgICAgSlNWYWx1ZSB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV92YWx1ZTsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIEFic3RyYWN0VmFsdWUgdG9w
KCkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgcmVzdWx0OwpAQCAtMzU1LDExICszNzIs
MTMgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIHZvaWQgc2V0KEpTVmFsdWUg
dmFsdWUpCiAgICAgewotICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOwogICAgICAgICBpZiAo
dmFsdWUuaXNDZWxsKCkpCi0gICAgICAgICAgICBtX3N0cnVjdHVyZS5hZGQodmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgCiAg
ICAgICAgIG1fdHlwZSA9IHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpOworICAgICAgICBtX3Zh
bHVlID0gdmFsdWU7CiAgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAg
fQpAQCAtMzcwLDYgKzM4OSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgbV9z
dHJ1Y3R1cmUuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIAogICAgICAgICBtX3R5cGUgPSBwcmVk
aWN0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1
ZSgpOwogICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAgLTM4
MSwxNyArNDAxLDI0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgbV90eXBlID0gdHlwZTsKKyAg
ICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwog
ICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAm
JiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvdGhlci5tX3R5cGUKKyAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVyLm1f
c3RydWN0dXJlCisgICAgICAgICAgICAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAg
fQogICAgIAogICAgIGJvb2wgbWVyZ2UoY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCiAgICAg
ewotICAgICAgICBib29sIHJlc3VsdCA9IG1lcmdlUHJlZGljdGlvbihtX3R5cGUsIG90aGVyLm1f
dHlwZSkgfCBtX3N0cnVjdHVyZS5hZGRBbGwob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgICAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICByZXN1bHQgfD0gbWVyZ2VQcmVkaWN0aW9uKG1f
dHlwZSwgb3RoZXIubV90eXBlKTsKKyAgICAgICAgcmVzdWx0IHw9IG1fc3RydWN0dXJlLmFkZEFs
bChvdGhlci5tX3N0cnVjdHVyZSk7CisgICAgICAgIGlmIChtX3ZhbHVlICE9IG90aGVyLm1fdmFs
dWUpCisgICAgICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDAyLDYgKzQyOSw3
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgCiAgICAgICAgIGlmICh0eXBlICYg
UHJlZGljdENlbGwpCiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAg
IG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IH0KQEAgLTQxNyw2ICs0NDUsMTAgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAv
LyBzdXJlIHRoYXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgUHJlZGljdGVkVHlw
ZSBuZWVkcyB0byBiZSBmZWQgYmFjawogICAgICAgICAvLyBpbnRvIHRoZSBpbmZvcm1hdGlvbiBn
bGVhbmVkIGZyb20gdGhlIFN0cnVjdHVyZVNldC4KICAgICAgICAgbV9zdHJ1Y3R1cmUuZmlsdGVy
KG1fdHlwZSk7CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ZhbHVlICYmICF2YWxpZGF0ZSht
X3ZhbHVlKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAogICAgICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CiAgICAgfQogICAgIApAQCAtNDMxLDYgKzQ2MywxMCBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgZmls
dGVyaW5nIGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGlzIHRvIGZpbHRlciBvbgogICAgICAgICAvLyB0
aGUgbmV3IHR5cGUgKE5vbmUpIHJhdGhlciB0aGFuIHRoZSBvbmUgcGFzc2VkIChBcnJheSkuCiAg
ICAgICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgICAgIGlmICghIW1fdmFs
dWUgJiYgIXZhbGlkYXRlKG1fdmFsdWUpKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCkBAIC00MzksNiArNDc1
LDkgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoaXNUb3AoKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiBtX3ZhbHVlID09IHZhbHVlOworICAgICAgICAKICAgICAgICAgaWYg
KG1lcmdlUHJlZGljdGlvbnMobV90eXBlLCBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0g
bV90eXBlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTQ2Myw2ICs1
MDIsMTIgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoIShtX3R5cGUgJiBQ
cmVkaWN0Q2VsbCkpCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuaXNDbGVhcigpKTsK
ICAgICAgICAgCisgICAgICAgIGlmIChpc0NsZWFyKCkpCisgICAgICAgICAgICBBU1NFUlQoIW1f
dmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIEFT
U0VSVChtZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZShtX3ZhbHVl
KSkgPT0gbV90eXBlKTsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3Np
YmxlIGZvciBhIHByZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMg
dGhhdAogICAgICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRo
YXQgdXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgICAgICAvLyB3ZSBkb24n
dCB3YW50IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0IHdvdWxkIG9ubHkgaW5jcmVh
c2UgdGhlIGNvbXB1dGF0aW9uYWwKQEAgLTQ3MywxMSArNTE4LDE0IEBAIHN0cnVjdCBBYnN0cmFj
dFZhbHVlIHsKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LCAiKCVzLCAiLCBwcmVkaWN0aW9u
VG9TdHJpbmcobV90eXBlKSk7CiAgICAgICAgIG1fc3RydWN0dXJlLmR1bXAob3V0KTsKKyAgICAg
ICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIGZwcmludGYob3V0LCAiLCAlcyIsIG1fdmFs
dWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KIAog
ICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7CiAgICAgUHJlZGljdGVkVHlw
ZSBtX3R5cGU7CisgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJ
KHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNC
bG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIHN0cnVjdCBCYXNpY0Jsb2Nr
IDogVmVjdG9yPE5vZGVJbmRleCwgOD4KICAgICAgICAgLCBpc09TUlRhcmdldChmYWxzZSkKICAg
ICAgICAgLCBjZmFIYXNWaXNpdGVkKGZhbHNlKQogICAgICAgICAsIGNmYVNob3VsZFJldmlzaXQo
ZmFsc2UpCisgICAgICAgICwgY2ZhRm91bmRDb25zdGFudHMoZmFsc2UpCiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAsIGlzTGlua2VkKGZhbHNlKQogI2VuZGlmCkBAIC03MCw2ICs3MSw3
IEBAIHN0cnVjdCBCYXNpY0Jsb2NrIDogVmVjdG9yPE5vZGVJbmRleCwgOD4KICAgICBib29sIGlz
T1NSVGFyZ2V0OwogICAgIGJvb2wgY2ZhSGFzVmlzaXRlZDsKICAgICBib29sIGNmYVNob3VsZFJl
dmlzaXQ7CisgICAgYm9vbCBjZmFGb3VuZENvbnN0YW50czsKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgYm9vbCBpc0xpbmtlZDsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVk
ZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBo
YXNlIHsKK3B1YmxpYzoKKyAgICBDb25zdGFudEZvbGRpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCisg
ICAgICAgIDogUGhhc2UoZ3JhcGgsICJjb25zdGFudCBmb2xkaW5nIikKKyAgICB7CisgICAgfQor
ICAgIAorICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FCisgICAgICAgIAor
ICAgICAgICAvLyAtIGZpbmQgYmxvY2tzIHRoYXQgbmVlZCBjb25zdGFudCBmb2xkaW5nIChibG9j
ay0+bV9jc2VGb3VuZENvbnN0YW50cyA9PSB0cnVlKQorICAgICAgICAvLyAtIHdhbGsgdGhlIGJs
b2NrLiBpZiBhIG5vZGUgaXMgZW5jb3VudGVyZWQgdGhhdCBoYXMgYSBjb25zdGFudCwgcmVwbGFj
ZSBpdAorICAgICAgICAvLyAgIGluLXBsYWNlLCBiZWluZyBjYXJlZnVsIHRvIGFkanVzdCBpdHMg
TXVzdEdlbmVyYXRlIHJlZiBjb3VudC4KKyAgICAgICAgLy8gLSBiZSBzdXJlIHRvIGluamVjdCBQ
aGFudG9tcyBmb3IgaXRzIGNoaWxkcmVuLgorICAgIH0KK307CisKKwordm9pZCBwZXJmb3JtQ29u
c3RhbnRGb2xkaW5nKEdyYXBoJiBncmFwaCkKK3sKKyAgICBydW5QaGFzZTxDb25zdGFudEZvbGRp
bmdQaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRp
ZiAvLyBFTkFCTEUoREZHX0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2VfaAorI2RlZmluZSBE
RkdDb25zdGFudEZvbGRpbmdQaGFzZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
I2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisK
K2NsYXNzIEdyYXBoOworCisvLyBDRkEtYmFzZWQgY29uc3RhbnQgZm9sZGluZy4gV2Fsa3MgdGhv
c2UgYmxvY2tzIG1hcmtlZCBieSB0aGUgQ0ZBIGFzIGhhdmluZworLy8gaW5mZXJyZWQgY29uc3Rh
bnRzLCBhbmQgcmVwbGFjZXMgdGhvc2Ugbm9kZXMgd2l0aCBjb25zdGFudHMgd2hpbHN0IGluamVj
dGluZworLy8gUGhhbnRvbSBub2RlcyB0byBrZWVwIHRoZSBjaGlsZHJlbiBhbGl2ZSAod2hpY2gg
aXMgbmVjZXNzYXJ5IGZvciBPU1IgZXhpdCkuCisKK3ZvaWQgcGVyZm9ybUNvbnN0YW50Rm9sZGlu
ZyhHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEx
Mzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2
ZShFeGVjU3RhdGUqIAogICAgIHJldHVybjsKIH0KIAotY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRp
b24oKQorY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIHN0YXRpYyBj
b25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXpl
XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9u
IDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQwLDcgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
U0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlz
VmFsaWRDYWxsZWUoKTsKIAotICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOworICAgICAgICBj
aGFyKiBkZXNjcmlwdGlvbigpIGNvbnN0OwogCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiBzeW50aGVzaXplUHJvdG90eXBlKEV4ZWNTdGF0ZSopIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137649</attachid>
            <date>2012-04-17 20:44:45 -0700</date>
            <delta_ts>2012-04-17 21:11:03 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>constprop_patch_3.diff</filename>
            <type>text/plain</type>
            <size>39056</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NDc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBA
CisyMDEyLTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlcyBBYnN0cmFjdFZhbHVl
IHRvIGJlIGFibGUgdG8gaG9sZCBhICJzZXQiIG9mIGNvbnN0YW50cywgd2hlcmUKKyAgICAgICAg
dGhlIG1heGltdW0gc2V0IHNpemUgaXMgMSAtIHNvIG1lcmdpbmcgYSB2YWx1ZSBjb250YWluaW5n
IGNvbnN0YW50IEEKKyAgICAgICAgd2l0aCBhbm90aGVyIHZhbHVlIGNvbnRhaW5pbmcgY29uc3Rh
bnQgQiB3aGVyZSBBICE9IEIgd2lsbCByZXN1bHQgaW4KKyAgICAgICAgdGhlIEFic3RyYWN0VmFs
dWUgY2xhaW1pbmcgdGhhdCBpdCBkb2VzIG5vdCBrbm93IGFueSBjb25zdGFudHMgKGkuZS4KKyAg
ICAgICAgaXQnbGwganVzdCBoYXZlIGEgcHJlZGljdGVkIHR5cGUgYW5kIHBvc3NpYmxlIGEgc3Ry
dWN0dXJlKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGEgY29uc3RhbnQgZm9sZGluZyBwaGFz
ZSB0aGF0IHVzZXMgdGhpcyBuZXcgaW5mb3JtYXRpb24gdG8KKyAgICAgICAgcmVwbGFjZSBwdXJl
IG9wZXJhdGlvbnMga25vd24gdG8gaGF2ZSBjb25zdGFudCByZXN1bHRzIHdpdGgKKyAgICAgICAg
SlNDb25zdGFudHMuIFRoaXMgaXMgT1NSLWV4aXQtYXdhcmUsIGluIHRoYXQgaXQgd2lsbCBwcmVw
ZW5kIGEgUGhhbnRvbQorICAgICAgICB0aGF0IHJlZmVycyB0byBhbGwgb2YgdGhlIGtpZHMgb2Yg
dGhlIG5vZGUgd2UgcmVwbGFjZWQuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2spOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmVuZEJhc2ljQmxvY2spOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFN0YXRlLmg6CisgICAgICAgIChBYnN0cmFjdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmNsZWFy
KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjppc0NsZWFyKToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjptYWtlVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFZhbHVlOjpjbG9iYmVyVmFsdWUpOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsdWVJc1RvcCk6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6dmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2UpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFs
dWU6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdBZGphY2VuY3lMaXN0Lmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWRqYWNlbmN5TGlzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChBZGphY2VuY3lMaXN0
KToKKyAgICAgICAgKEpTQzo6REZHOjpBZGphY2VuY3lMaXN0OjpyZXNldCk6CisgICAgICAgICog
ZGZnL0RGR0Jhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2NrOjpCYXNp
Y0Jsb2NrKToKKyAgICAgICAgKEJhc2ljQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmNvbnN0YW50Q1NFKToKKyAgICAg
ICAgKENTRVBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVD
U0UpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKENvbnN0YW50Rm9sZGluZ1BoYXNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Q29uc3RhbnRGb2xkaW5nUGhhc2UpOgor
ICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6OnBlcmZvcm1Db25zdGFudEZvbGRpbmcpOgorICAgICAgICAqIGRmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5oOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0YW50KToKKyAgICAgICAgKE5vZGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRl
c2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFs
dWUpOgorCiAyMDEyLTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQXR0ZW1wdCB0byBmaXggV2luZG93cyBidWlsZC4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtOTEsNiArOTEsOCBAQAogCQkwRjJCREMyQzE1MUZERTkxMDBDRDg5MTAgLyogT3BlcmFuZHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkJEQzJC
MTUxRkRFOEIwMENEODkxMCAvKiBPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxv
Y2tzLmNwcCAqLzsgfTsKKwkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGM0IzQTE3MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgKi87IH07CisJCTBGM0IzQTFCMTUzRTY4RjQwMDNFRDBGRiAvKiBERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZB
NDgxNDYwQ0JCMzAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBW
YWx1ZVJlY292ZXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYw
Q0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBE
YXRhRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NjEsNiArNzYzLDggQEAKIAkJ
MEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE9wZXJhbmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0IzQTE3MTUzRTY4RUYwMDNFRDBGRiAv
KiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjNC
M0ExODE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVJlY292ZXJ5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVn
aXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4
RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFG
b3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNDMsNiArMjA0Nyw4IEBA
CiAJCQkJMEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8s
CiAJCQkJMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAog
CQkJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLywKKwkJCQkwRjNC
M0ExNzE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwICovLAor
CQkJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5o
ICovLAogCQkJCTBGQzA5NzlEMTQ2QjI3MUUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQ
b2ludC5jcHAgKi8sCiAJCQkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3Rh
YmxlSnVtcFBvaW50LmggKi8sCiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0Rv
dWJsZUZvcm1hdFN0YXRlLmggKi8sCkBAIC0yNTcwLDYgKzI1NzYsNyBAQAogCQkJCTg2MTJFNENE
MTUyMzg5RUMwMEM4MzZCRSAvKiBNYXRjaFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
RTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMUUzQTQ3MTUzNENCQjkwMDBGOTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTMxMzMsNiArMzE0MCw3IEBA
CiAJCQkJODY0MkM1MTAxNTFDMDZBOTAwNDZENEVGIC8qIFJlZ0V4cENhY2hlZFJlc3VsdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjQyQzUxMjE1MUMwODNEMDA0NkQ0RUYgLyogUmVnRXhwTWF0
Y2hlc0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2M0M2RDlDMTUyMTExMUEwMDU4NUU0
RSAvKiBZYXJyQ2Fub25pY2FsaXplVUNTMi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjNCM0Ex
QTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RT
dGF0ZS5jcHAJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDcgQEAgdm9p
ZCBBYnN0cmFjdFN0YXRlOjpiZWdpbkJhc2ljQmxvY2soQmFzaQogICAgIGJhc2ljQmxvY2stPmNm
YUhhc1Zpc2l0ZWQgPSB0cnVlOwogICAgIG1fYmxvY2sgPSBiYXNpY0Jsb2NrOwogICAgIG1faXNW
YWxpZCA9IHRydWU7CisgICAgbV9mb3VuZENvbnN0YW50cyA9IGZhbHNlOwogfQogCiB2b2lkIEFi
c3RyYWN0U3RhdGU6OmluaXRpYWxpemUoR3JhcGgmIGdyYXBoKQpAQCAtMTU3LDYgKzE1OCw4IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZW5kQmFzaWNCbG9jayhNZXJnZU0KICAgICAKICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmxvY2s7IC8vIFNhdmUgdGhlIGJsb2NrIGZvciBzdWNjZXNzb3Ig
bWVyZ2luZy4KICAgICAKKyAgICBibG9jay0+Y2ZhRm91bmRDb25zdGFudHMgPSBtX2ZvdW5kQ29u
c3RhbnRzOworICAgIAogICAgIGlmICghbV9pc1ZhbGlkKSB7CiAgICAgICAgIHJlc2V0KCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyNSwxMyArMjI4LDcgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CiAgICAg
Y2FzZSBKU0NvbnN0YW50OgogICAgIGNhc2UgV2Vha0pTQ29uc3RhbnQ6IHsKLSAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsKLSAgICAg
ICAgLy8gSGF2ZSB0byBiZSBjYXJlZnVsIGhlcmUhIEl0J3MgdGVtcHRpbmcgdG8gY2FsbCBzZXQo
dmFsdWUpLCBidXQKLSAgICAgICAgLy8gdGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2UgdGhhdCB3
b3VsZCBjb25zdGl0dXRlIGEgcHJvb2YgdGhhdCB0aGlzCi0gICAgICAgIC8vIHZhbHVlIHdpbGwg
YWx3YXlzIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlLiBUaGUgd2hvbGUgcG9pbnQgb2YgYSB2YWx1
ZQotICAgICAgICAvLyBoYXZpbmcgYSBzdHJ1Y3R1cmUgaXMgdGhhdCBpdCBtYXkgY2hhbmdlIGlu
IHRoZSBmdXR1cmUgLSBmb3IgZXhhbXBsZQotICAgICAgICAvLyBiZXR3ZWVuIHdoZW4gd2UgY29t
cGlsZSB0aGUgY29kZSBhbmQgd2hlbiB3ZSBydW4gaXQuCi0gICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQocHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOworICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMjc3LDIwICsyNzQsNjggQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgQml0WG9yOgog
ICAgIGNhc2UgQml0UlNoaWZ0OgogICAgIGNhc2UgQml0TFNoaWZ0OgotICAgIGNhc2UgQml0VVJT
aGlmdDoKKyAgICBjYXNlIEJpdFVSU2hpZnQ6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9y
Tm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAm
JiBsZWZ0LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgIGludDMy
X3QgYSA9IGxlZnQuYXNJbnQzMigpOworICAgICAgICAgICAgaW50MzJfdCBiID0gcmlnaHQuYXNJ
bnQzMigpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgIGNh
c2UgQml0QW5kOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1
ZShhICYgYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRP
cjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSB8IGIp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0WG9yOgorICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIF4gYikpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRSU2hpZnQ6CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgPj4gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEJpdExTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFs
dWUoYSA8PCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQml0VVJTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGEpID4+IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIo
UHJlZGljdEludDMyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50
MzIpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAotICAgIGNhc2UgVUludDMyVG9O
dW1iZXI6CisgICAgY2FzZSBVSW50MzJUb051bWJlcjogeworICAgICAgICBKU1ZhbHVlIGNoaWxk
ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYg
Y2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGNoaWxkLmlzSW50MzIoKSk7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoY2hpbGQuYXNVSW50
MzIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAoIW5vZGUuY2FuU3BlY3VsYXRlSW50ZWdl
cigpKQogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgICAgICAKLSAgICBjYXNlIFZh
bHVlVG9JbnQzMjoKKyAgICBjYXNlIFZhbHVlVG9JbnQzMjogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgaWYgKGNoaWxkLmlzSW50MzIoKSkK
KyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGNoaWxkKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUo
SlNDOjp0b0ludDMyKGNoaWxkLmFzRG91YmxlKCkpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlm
IChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAg
ICAgIGVsc2UgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlTnVtYmVy
KCkpCkBAIC0zMDAsMTQgKzM0NSwyOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgIAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBJbnQz
MlRvRG91YmxlOgorICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgICAgICBKU1ZhbHVlIGNo
aWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQg
JiYgY2hpbGQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBjaGlsZC5hc051bWJlcigpKSk7Cisg
ICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RO
dW1iZXIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwog
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlQWRkOgog
ICAgIGNhc2UgQXJpdGhBZGQ6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2Rl
LmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0Lmlz
TnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChKU1ZhbHVlKGxlZnQuYXNOdW1iZXIoKSArIHJpZ2h0LmFzTnVtYmVyKCkpKTsK
KyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdl
cihub2RlKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7CkBAIC0zMzEsNiArMzkxLDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhl
Y3V0ZSh1bnNpZ25lZCBpbmQKICAgICB9CiAgICAgICAgICAgICAKICAgICBjYXNlIEFyaXRoU3Vi
OiB7CisgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUo
KTsKKyAgICAgICAgSlNWYWx1ZSByaWdodCA9IGZvck5vZGUobm9kZS5jaGlsZDIoKSkudmFsdWUo
KTsKKyAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1
ZShsZWZ0LmFzTnVtYmVyKCkgLSByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAgICBtX2Zv
dW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpIHsKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwpAQCAt
MzQ0LDYgKzQxMSwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFyaXRoTmVnYXRlOiB7CisgICAgICAgIEpTVmFs
dWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChj
aGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KEpTVmFsdWUoLWNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRD
b25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
aWYgKG1fZ3JhcGgubmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTM1OSw2ICs0
MzIsMzQgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNh
c2UgQXJpdGhNaW46CiAgICAgY2FzZSBBcml0aE1heDoKICAgICBjYXNlIEFyaXRoTW9kOiB7Cisg
ICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAg
ICAgICAgSlNWYWx1ZSByaWdodCA9IGZvck5vZGUobm9kZS5jaGlsZDIoKSkudmFsdWUoKTsKKyAg
ICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdC5hc051bWJlcigpOworICAgICAg
ICAgICAgZG91YmxlIGIgPSByaWdodC5hc051bWJlcigpOworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLm9wKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhNdWw6CisgICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgKiBiKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEFyaXRoRGl2OgorICAgICAgICAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIC8gYikpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBBcml0aE1pbjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KEpTVmFsdWUoYSA8IGIgPyBhIDogKGIgPD0gYSA/IGIgOiBhICsgYikpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhNYXg6CisgICAg
ICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgPiBiID8gYSA6IChi
ID49IGEgPyBiIDogYSArIGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEFyaXRoTW9kOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShmbW9kKGEsIGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9mb3VuZENvbnN0
YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAo
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihtX2dyYXBoW25vZGUuY2hpbGQxKCldLCBtX2dy
YXBoW25vZGUuY2hpbGQyKCldKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBA
IC0zNzEsNyArNDcyLDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCi0gICAgY2FzZSBBcml0aEFi
czoKKyAgICBjYXNlIEFyaXRoQWJzOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051
bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoZmFi
cyhjaGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRy
dWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgJiYgbm9kZS5jYW5TcGVjdWxh
dGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RJbnQzMik7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RJbnQzMik7CkBAIC0zODAsMTMgKzQ4NywzNCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1
dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3ROdW1iZXIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3Vi
bGUpOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgICAgICAKLSAgICBjYXNlIEFyaXRo
U3FydDoKKyAgICBjYXNlIEFyaXRoU3FydDogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQu
aXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVl
KHNxcnQoY2hpbGQuYXNOdW1iZXIoKSkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAg
ICAgICAgIAogICAgIGNhc2UgTG9naWNhbE5vdDogeworICAgICAgICBKU1ZhbHVlIGNoaWxkQ29u
c3QgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZENv
bnN0KSB7CisgICAgICAgICAgICBpZiAoY2hpbGRDb25zdC5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKCFjaGlsZENvbnN0LmFzTnVt
YmVyKCkpKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaGlsZENv
bnN0LmlzQm9vbGVhbigpKSB7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChKU1ZhbHVlKCFjaGlsZENvbnN0LmFzQm9vbGVhbigpKSk7CisgICAgICAgICAgICAgICAgbV9m
b3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldOwogICAgICAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihjaGlsZC5wcmVkaWN0aW9uKCkp
KQogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJvb2xl
YW4pOwpAQCAtNDEwLDYgKzUzOCwzMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgY2FzZSBJc1N0cmluZzoKICAgICBjYXNlIElzT2JqZWN0OgogICAgIGNh
c2UgSXNGdW5jdGlvbjogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGQpIHsKKyAgICAgICAgICAgIGJvb2wg
Zm91bmRDb25zdGFudCA9IHRydWU7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewor
ICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KGpzQm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQuaXNDZWxs
KCkKKyAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpCisgICAgICAgICAgICAgICAgICAgIDog
Y2hpbGQuaXNVbmRlZmluZWQoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBJc0Jvb2xlYW46CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChqc0Jvb2xlYW4oY2hpbGQuaXNCb29sZWFuKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChqc0Jvb2xlYW4oY2hpbGQuaXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc1N0cmluZzoKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihpc0pTU3RyaW5nKGNoaWxkKSkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmb3VuZENvbnN0YW50KSB7Cisg
ICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQxOSw2
ICs1NzQsMzUgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAg
IGNhc2UgQ29tcGFyZUdyZWF0ZXI6CiAgICAgY2FzZSBDb21wYXJlR3JlYXRlckVxOgogICAgIGNh
c2UgQ29tcGFyZUVxOiB7CisgICAgICAgIEpTVmFsdWUgbGVmdENvbnN0ID0gZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0Q29uc3QgPSBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0Q29uc3QgJiYgcmlnaHRD
b25zdCAmJiBsZWZ0Q29uc3QuaXNOdW1iZXIoKSAmJiByaWdodENvbnN0LmlzTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdENvbnN0LmFzTnVtYmVyKCk7CisgICAgICAgICAg
ICBkb3VibGUgYiA9IHJpZ2h0Q29uc3QuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAo
bm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNzOgorICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGEgPCBiKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVMZXNzRXE6CisgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA8PSBiKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyOgorICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGEgPiBiKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA+PSBiKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvbXBhcmVFcToKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhID09IGIpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgCiAgICAgICAgIE5vZGUmIGxlZnQgPSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldOwpAQCAtNDcwLDkgKzY1NCwxNyBAQCBib29sIEFic3RyYWN0
U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAg
ICAgICAgIAotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgorICAgIGNhc2UgQ29tcGFyZVN0cmlj
dEVxOiB7CisgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFs
dWUoKTsKKyAgICAgICAgSlNWYWx1ZSByaWdodCA9IGZvck5vZGUobm9kZS5jaGlsZDIoKSkudmFs
dWUoKTsKKyAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQgJiYgbGVmdC5pc051bWJlcigpICYmIHJp
Z2h0LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNC
b29sZWFuKGxlZnQuYXNOdW1iZXIoKSA9PSByaWdodC5hc051bWJlcigpKSk7CisgICAgICAgICAg
ICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOwogICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hhckNvZGVBdDoKICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7CkBAIC03
MjEsNiArOTEzLDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQK
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvUHJpbWl0aXZlOiB7Cisg
ICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUo
KTsKKyAgICAgICAgaWYgKGNoaWxkQ29uc3QgJiYgY2hpbGRDb25zdC5pc051bWJlcigpKSB7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGNoaWxkQ29uc3QpOworICAgICAgICAg
ICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
OwogICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHJldmlzaW9u
IDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDcgQEAgcHJpdmF0ZToKICAgICBPcGVyYW5k
czxBYnN0cmFjdFZhbHVlPiBtX3ZhcmlhYmxlczsKICAgICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOwog
ICAgIGJvb2wgbV9oYXZlU3RydWN0dXJlczsKKyAgICBib29sIG1fZm91bmRDb25zdGFudHM7CiAg
ICAgCiAgICAgYm9vbCBtX2lzVmFsaWQ7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTcsMTAgKzMxNywxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgewogICAgICAgICBt
X3R5cGUgPSBQcmVkaWN0Tm9uZTsKICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAg
ICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAg
IH0KICAgICAKLSAgICBib29sIGlzQ2xlYXIoKQorICAgIGJvb2wgaXNDbGVhcigpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IFByZWRpY3ROb25lICYmIG1fc3RydWN0dXJl
LmlzQ2xlYXIoKTsKICAgICB9CkBAIC0zMjksNiArMzMwLDcgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgIHsKICAgICAgICAgbV90eXBlID0gUHJlZGljdFRvcDsKICAgICAgICAgbV9zdHJ1
Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICBj
aGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIApAQCAtMzQxLDExICszNDMsMjYgQEAgc3Ry
dWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY2xvYmJlclZhbHVlKCkKKyAgICB7CisgICAgICAgIG1fdmFsdWUgPSBK
U1ZhbHVlKCk7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNUb3AoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fdHlwZSA9PSBQcmVkaWN0VG9wICYmIG1fc3RydWN0dXJlLmlzVG9wKCk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgdmFsdWVJc1RvcCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gIW1fdmFsdWUgJiYgbV90eXBlOworICAgIH0KKyAgICAKKyAgICBKU1ZhbHVlIHZh
bHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZhbHVlOworICAgIH0KKyAgICAK
ICAgICBzdGF0aWMgQWJzdHJhY3RWYWx1ZSB0b3AoKQogICAgIHsKICAgICAgICAgQWJzdHJhY3RW
YWx1ZSByZXN1bHQ7CkBAIC0zNTUsMTEgKzM3MiwxOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7
CiAgICAgCiAgICAgdm9pZCBzZXQoSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIG1fc3Ry
dWN0dXJlLmNsZWFyKCk7Ci0gICAgICAgIGlmICh2YWx1ZS5pc0NlbGwoKSkKLSAgICAgICAgICAg
IG1fc3RydWN0dXJlLmFkZCh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAgICBp
ZiAodmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIC8vIEhhdmUgdG8gYmUgY2FyZWZ1bCBo
ZXJlISBJdCdzIHRlbXB0aW5nIHRvIHNldCB0aGUgc3RydWN0dXJlIHRvIHRoZQorICAgICAgICAg
ICAgLy8gdmFsdWUncyBzdHJ1Y3R1cmUsIGJ1dCB0aGF0IHdvdWxkIGJlIHdyb25nLCBzaW5jZSB0
aGF0IHdvdWxkCisgICAgICAgICAgICAvLyBjb25zdGl0dXRlIGEgcHJvb2YgdGhhdCB0aGlzIHZh
bHVlIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUKKyAgICAgICAgICAgIC8vIHN0cnVjdHVyZS4g
VGhlIHdob2xlIHBvaW50IG9mIGEgdmFsdWUgaGF2aW5nIGEgc3RydWN0dXJlIGlzIHRoYXQKKyAg
ICAgICAgICAgIC8vIGl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAtIGZvciBleGFtcGxlIGJl
dHdlZW4gd2hlbiB3ZSBjb21waWxlCisgICAgICAgICAgICAvLyB0aGUgY29kZSBhbmQgd2hlbiB3
ZSBydW4gaXQuCisgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgCiAgICAgICAg
IG1fdHlwZSA9IHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpOworICAgICAgICBtX3ZhbHVlID0g
dmFsdWU7CiAgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQpAQCAt
MzcwLDYgKzM5NSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgbV9zdHJ1Y3R1
cmUuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgIAogICAgICAgICBtX3R5cGUgPSBwcmVkaWN0aW9u
RnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwog
ICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAgLTM4MSwxNyAr
NDA3LDI0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKICAgICAgICAgbV90eXBlID0gdHlwZTsKKyAgICAgICAg
bV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0K
ICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZSAmJiBtX3N0
cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBv
dGhlci5tX3R5cGUKKyAgICAgICAgICAgICYmIG1fc3RydWN0dXJlID09IG90aGVyLm1fc3RydWN0
dXJlCisgICAgICAgICAgICAmJiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7CiAgICAgfQogICAg
IAogICAgIGJvb2wgbWVyZ2UoY29uc3QgQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCiAgICAgewotICAg
ICAgICBib29sIHJlc3VsdCA9IG1lcmdlUHJlZGljdGlvbihtX3R5cGUsIG90aGVyLm1fdHlwZSkg
fCBtX3N0cnVjdHVyZS5hZGRBbGwob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOworICAgICAgICByZXN1bHQgfD0gbWVyZ2VQcmVkaWN0aW9uKG1fdHlwZSwg
b3RoZXIubV90eXBlKTsKKyAgICAgICAgcmVzdWx0IHw9IG1fc3RydWN0dXJlLmFkZEFsbChvdGhl
ci5tX3N0cnVjdHVyZSk7CisgICAgICAgIGlmIChtX3ZhbHVlICE9IG90aGVyLm1fdmFsdWUpCisg
ICAgICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtNDAyLDYgKzQzNSw3IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgCiAgICAgICAgIGlmICh0eXBlICYgUHJlZGlj
dENlbGwpCiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgIG1fdmFs
dWUgPSBKU1ZhbHVlKCk7CiAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAg
LTQxNyw2ICs0NTEsMTAgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyBzdXJl
IHRoYXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgUHJlZGljdGVkVHlwZSBuZWVk
cyB0byBiZSBmZWQgYmFjawogICAgICAgICAvLyBpbnRvIHRoZSBpbmZvcm1hdGlvbiBnbGVhbmVk
IGZyb20gdGhlIFN0cnVjdHVyZVNldC4KICAgICAgICAgbV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlw
ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoISFtX3ZhbHVlICYmICF2YWxpZGF0ZShtX3ZhbHVl
KSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiAgICAgfQogICAgIApAQCAtNDMxLDYgKzQ2OSwxMCBAQCBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGF0IHRoZSBzdHJ1Y3R1cmUgZmlsdGVyaW5n
IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGlzIHRvIGZpbHRlciBvbgogICAgICAgICAvLyB0aGUgbmV3
IHR5cGUgKE5vbmUpIHJhdGhlciB0aGFuIHRoZSBvbmUgcGFzc2VkIChBcnJheSkuCiAgICAgICAg
IG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworCisgICAgICAgIGlmICghIW1fdmFsdWUgJiYg
IXZhbGlkYXRlKG1fdmFsdWUpKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgCiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCkBAIC00MzksNiArNDgxLDkgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBtX3ZhbHVlID09IHZhbHVlOworICAgICAgICAKICAgICAgICAgaWYgKG1lcmdl
UHJlZGljdGlvbnMobV90eXBlLCBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gbV90eXBl
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTQ2Myw2ICs1MDgsMTIg
QEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoIShtX3R5cGUgJiBQcmVkaWN0
Q2VsbCkpCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAg
ICAgCisgICAgICAgIGlmIChpc0NsZWFyKCkpCisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUp
OworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIEFTU0VSVCht
ZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0g
bV90eXBlKTsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZv
ciBhIHByZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAog
ICAgICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRoYXQgdXNl
cyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgICAgICAvLyB3ZSBkb24ndCB3YW50
IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0IHdvdWxkIG9ubHkgaW5jcmVhc2UgdGhl
IGNvbXB1dGF0aW9uYWwKQEAgLTQ3MywxMSArNTI0LDE0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LCAiKCVzLCAiLCBwcmVkaWN0aW9uVG9TdHJp
bmcobV90eXBlKSk7CiAgICAgICAgIG1fc3RydWN0dXJlLmR1bXAob3V0KTsKKyAgICAgICAgaWYg
KCEhbV92YWx1ZSkKKyAgICAgICAgICAgIGZwcmludGYob3V0LCAiLCAlcyIsIG1fdmFsdWUuZGVz
Y3JpcHRpb24oKSk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KIAogICAgIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7CiAgICAgUHJlZGljdGVkVHlwZSBtX3R5
cGU7CisgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJ
KHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNl
bmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTAgKzExNCwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIGNoaWxkKDIpID0gY2hpbGQzOwogICAgIH0KICAgICAKLSAgICB2b2lkIGluaXRpYWxp
emUoTm9kZUluZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNoaWxkMiwgTm9kZUluZGV4IGNoaWxkMykK
KyAgICB2b2lkIGluaXRpYWxpemUoTm9kZUluZGV4IGNoaWxkMSA9IE5vTm9kZSwgTm9kZUluZGV4
IGNoaWxkMiA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMyA9IE5vTm9kZSkKICAgICB7CiAgICAg
ICAgIGluaXRpYWxpemUoRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7
CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgICAgIG1fa2luZCA9IEZpeGVkOworI2VuZGlmCisgICAgICAgIGluaXRpYWxpemUo
KTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBmaXJzdENoaWxkKCkgY29uc3QKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTEz
OTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9k
ZUluZGV4LCA4PgogICAgICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQogICAgICAgICAsIGNmYUhh
c1Zpc2l0ZWQoZmFsc2UpCiAgICAgICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKKyAgICAg
ICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgICwgaXNMaW5rZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTcwLDYgKzcxLDcgQEAgc3RydWN0IEJh
c2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CiAg
ICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKKyAgICBi
b29sIGNmYUZvdW5kQ29uc3RhbnRzOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGlz
TGlua2VkOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsMjIgQEAgcHJpdmF0
ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgTm9kZUluZGV4IGNv
bnN0YW50Q1NFKE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBl
bmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGluZGV4
ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAgTm9kZSYgb3RoZXJOb2RlID0g
bV9ncmFwaFtpbmRleF07CisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLm9wKCkgIT0gSlNDb25z
dGFudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKG90aGVyTm9kZS5jb25zdGFudE51bWJlcigpICE9IG5vZGUuY29uc3RhbnROdW1iZXIo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
cmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiBOb05vZGU7CisgICAgfQor
ICAgIAogICAgIGJvb2wgaXNQcmVkaWN0ZWROdW1lcmljYWwoTm9kZSYgbm9kZSkKICAgICB7CiAg
ICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpOwpAQCAtNTk3LDYgKzYxMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0UmVw
bGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFu
Z2UsIGJ1dCBuZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25z
dGFudHMsCisgICAgICAgICAgICAvLyB3aGljaCBtYXkgcmVzdWx0IGluIGR1cGxpY2F0ZWQgY29u
c3RhbnRzLiBXZSB1c2UgQ1NFIHRvIGNsZWFuIHRoaXMgdXAuCisgICAgICAgICAgICBzZXRSZXBs
YWNlbWVudChjb25zdGFudENTRShub2RlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgc2V0UmVwbGFj
ZW1lbnQoaW1wdXJlQ1NFKG5vZGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiREZHQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2suaCIKKyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNl
dC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKKworY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVi
bGljOgorICAgIENvbnN0YW50Rm9sZGluZ1BoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQ
aGFzZShncmFwaCwgImNvbnN0YW50IGZvbGRpbmciKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
dm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RTdGF0ZSBzdGF0ZShtX2dyYXBoKTsK
KyAgICAgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4gaW5zZXJ0aW9uU2V0OworICAgICAgICAK
KyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9n
cmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkgeworICAgICAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAg
ICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFudHMpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBzdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9j
ay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgICAgIHN0YXRlLmV4ZWN1
dGUoaW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggbm9kZUluZGV4ID0g
YmxvY2stPmF0KGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1f
Z3JhcGhbbm9kZUluZGV4XTsKKyAgICAgICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJh
dGUoKQorICAgICAgICAgICAgICAgICAgICB8fCAobm9kZS5mbGFncygpICYgKE5vZGVDbG9iYmVy
c1dvcmxkIHwgTm9kZU1pZ2h0Q2xvYmJlcikpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gc3RhdGUuZm9yTm9kZShub2RlSW5k
ZXgpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgTm9kZSBwaGFudG9tKFBoYW50b20sIG5v
ZGUuY29kZU9yaWdpbik7CisgICAgICAgICAgICAgICAgcGhhbnRvbS5jaGlsZHJlbiA9IG5vZGUu
Y2hpbGRyZW47CisgICAgICAgICAgICAgICAgcGhhbnRvbS5yZWYoKTsKKyAgICAgICAgICAgICAg
ICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGVJbmRleCwgdmFsdWUpOworICAgICAgICAg
ICAgICAgIE5vZGVJbmRleCBwaGFudG9tTm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAg
ICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7CisgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIHBoYW50b21Ob2RlSW5kZXgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgc3RhdGUucmVzZXQoKTsKKyAgICAgICAgICAgIGluc2VydGlv
blNldC5leGVjdXRlKCpibG9jayk7CisgICAgICAgIH0KKyAgICB9Cit9OworCit2b2lkIHBlcmZv
cm1Db25zdGFudEZvbGRpbmcoR3JhcGgmIGdyYXBoKQoreworICAgIHJ1blBoYXNlPENvbnN0YW50
Rm9sZGluZ1BoYXNlPihncmFwaCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKwor
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdDb25zdGFudEZvbGRpbmdQaGFzZV9oCisjZGVm
aW5lIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKKworY2xhc3MgR3JhcGg7CisKKy8vIENGQS1iYXNlZCBjb25zdGFudCBmb2xkaW5nLiBXYWxr
cyB0aG9zZSBibG9ja3MgbWFya2VkIGJ5IHRoZSBDRkEgYXMgaGF2aW5nCisvLyBpbmZlcnJlZCBj
b25zdGFudHMsIGFuZCByZXBsYWNlcyB0aG9zZSBub2RlcyB3aXRoIGNvbnN0YW50cyB3aGlsc3Qg
aW5qZWN0aW5nCisvLyBQaGFudG9tIG5vZGVzIHRvIGtlZXAgdGhlIGNoaWxkcmVuIGFsaXZlICh3
aGljaCBpcyBuZWNlc3NhcnkgZm9yIE9TUiBleGl0KS4KKwordm9pZCBwZXJmb3JtQ29uc3RhbnRG
b2xkaW5nKEdyYXBoJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHQ29uc3RhbnRGb2xkaW5nUGhhc2VfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAx
MTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJERkdCeXRlQ29kZVBhcnNlci5o
IgogI2luY2x1ZGUgIkRGR0NGQVBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQ1NFUGhhc2UuaCIKKyNp
bmNsdWRlICJERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0ZpeHVwUGhh
c2UuaCIKICNpbmNsdWRlICJERkdKSVRDb21waWxlci5oIgogI2luY2x1ZGUgIkRGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmgiCkBAIC02Miw5ICs2MywxMCBAQCBpbmxpbmUgYm9vbCBjb21w
aWxlKENvbXBpbGVNb2RlIGNvbXBpbGVNCiAgICAgcGVyZm9ybVJlZHVuZGFudFBoaUVsaW1pbmF0
aW9uKGRmZyk7CiAgICAgcGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlvbihkZmcpOwogICAgIHBl
cmZvcm1GaXh1cChkZmcpOworICAgIHBlcmZvcm1DRkEoZGZnKTsKKyAgICBwZXJmb3JtQ29uc3Rh
bnRGb2xkaW5nKGRmZyk7CiAgICAgcGVyZm9ybUNTRShkZmcpOwogICAgIHBlcmZvcm1WaXJ0dWFs
UmVnaXN0ZXJBbGxvY2F0aW9uKGRmZyk7Ci0gICAgcGVyZm9ybUNGQShkZmcpOwogCiAjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coIkdyYXBoIGFmdGVyIG9wdGltaXph
dGlvbjpcbiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZGVyZWYobm9k
ZS5jaGlsZDMoKSk7CiAgICAgICAgIG5vZGUuY2hpbGRyZW4uY2hpbGQzKCkgPSBFZGdlKCk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgY29udmVydFRvQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRl
eCwgdW5zaWduZWQgY29uc3RhbnROdW1iZXIpCisgICAgeworICAgICAgICBhdChub2RlSW5kZXgp
LmNvbnZlcnRUb0NvbnN0YW50KGNvbnN0YW50TnVtYmVyKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBjb252ZXJ0VG9Db25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4LCBKU1ZhbHVlIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgY29udmVydFRvQ29uc3RhbnQobm9kZUluZGV4LCBtX2NvZGVCbG9jay0+
YWRkT3JGaW5kQ29uc3RhbnQodmFsdWUpKTsKKyAgICB9CiAKICAgICAvLyBDb2RlQmxvY2sgaXMg
b3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiB0byBiZSBkdW1w
ZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCiAgICAgdm9pZCBkdW1wKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcs
MTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAg
IAorICAgIHZvaWQgY29udmVydFRvQ29uc3RhbnQodW5zaWduZWQgY29uc3RhbnROdW1iZXIpCisg
ICAgeworICAgICAgICBtX29wID0gSlNDb25zdGFudDsKKyAgICAgICAgaWYgKG1fZmxhZ3MgJiBO
b2RlTXVzdEdlbmVyYXRlKQorICAgICAgICAgICAgbV9yZWZDb3VudC0tOworICAgICAgICBtX2Zs
YWdzICY9IH5Ob2RlTXVzdEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVt
YmVyOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgIH0KKyAgICAKICAgICBKU0NlbGwq
IHdlYWtDb25zdGFudCgpCiAgICAgewogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2Vs
bCo+KG1fb3BJbmZvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSlNW
YWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICByZXR1cm47CiB9CiAKLWNoYXIq
IEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKK2NoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkgY29u
c3QKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNo
YXIgZGVzY3JpcHRpb25bc2l6ZV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSAgICAgICAgY2hhciogZGVzY3Jp
cHRpb24oKTsKKyAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUq
KSBjb25zdDsKIAo=
</data>
<flag name="commit-queue"
          id="142766"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137651</attachid>
            <date>2012-04-17 21:11:03 -0700</date>
            <delta_ts>2012-04-17 21:13:36 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>constprop_patch_4.diff</filename>
            <type>text/plain</type>
            <size>42131</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NDc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEyLTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlcyBBYnN0cmFjdFZhbHVl
IHRvIGJlIGFibGUgdG8gaG9sZCBhICJzZXQiIG9mIGNvbnN0YW50cywgd2hlcmUKKyAgICAgICAg
dGhlIG1heGltdW0gc2V0IHNpemUgaXMgMSAtIHNvIG1lcmdpbmcgYSB2YWx1ZSBjb250YWluaW5n
IGNvbnN0YW50IEEKKyAgICAgICAgd2l0aCBhbm90aGVyIHZhbHVlIGNvbnRhaW5pbmcgY29uc3Rh
bnQgQiB3aGVyZSBBICE9IEIgd2lsbCByZXN1bHQgaW4KKyAgICAgICAgdGhlIEFic3RyYWN0VmFs
dWUgY2xhaW1pbmcgdGhhdCBpdCBkb2VzIG5vdCBrbm93IGFueSBjb25zdGFudHMgKGkuZS4KKyAg
ICAgICAgaXQnbGwganVzdCBoYXZlIGEgcHJlZGljdGVkIHR5cGUgYW5kIHBvc3NpYmxlIGEgc3Ry
dWN0dXJlKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGEgY29uc3RhbnQgZm9sZGluZyBwaGFz
ZSB0aGF0IHVzZXMgdGhpcyBuZXcgaW5mb3JtYXRpb24gdG8KKyAgICAgICAgcmVwbGFjZSBwdXJl
IG9wZXJhdGlvbnMga25vd24gdG8gaGF2ZSBjb25zdGFudCByZXN1bHRzIHdpdGgKKyAgICAgICAg
SlNDb25zdGFudHMuIFRoaXMgaXMgT1NSLWV4aXQtYXdhcmUsIGluIHRoYXQgaXQgd2lsbCBwcmVw
ZW5kIGEgUGhhbnRvbQorICAgICAgICB0aGF0IHJlZmVycyB0byBhbGwgb2YgdGhlIGtpZHMgb2Yg
dGhlIG5vZGUgd2UgcmVwbGFjZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0
ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpl
bmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJhY3RT
dGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFZhbHVlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RW
YWx1ZTo6aXNDbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRv
cCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclZhbHVlKToKKyAg
ICAgICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OnZhbHVlSXNUb3ApOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0VmFsdWU6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWRqYWNl
bmN5TGlzdC5oOgorICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OmluaXRpYWxpemUp
OgorICAgICAgICAoQWRqYWNlbmN5TGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5
TGlzdDo6cmVzZXQpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgIChCYXNpY0Jsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChDb25zdGFu
dEZvbGRpbmdQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5n
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaDogQWRkZWQuCisgICAg
ICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAg
ICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNl
dDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAx
Mi0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgbm90IGF0dGVtcHQgdG8gZ2V0IHJhcmUgY2FzZSBjb3VudHMgZm9yIG9wX21vZCBvbiBB
Uk0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMzk0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAogICAgIGRm
Zy9ERkdDRkFQaGFzZS5jcHAKKyAgICBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCiAg
ICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcAogICAgIGRmZy9ERkdDU0VQaGFzZS5j
cHAKICAgICBkZmcvREZHRHJpdmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsOCArMTU0LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkFQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZBUGhh
c2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaCBcCi0JU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgXAotCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ1NFUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
cml2ZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTM5
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtOTIsNiArOTIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBkZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwIFwKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBcCiAgICAgZGZnL0RGR0NGQVBoYXNl
LmNwcCBcCisgICAgZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBcCiAgICAgZGZnL0RG
R0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCBcCiAgICAgZGZnL0RGR0NTRVBoYXNlLmNwcCBcCiAg
ICAgZGZnL0RGR0RyaXZlci5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4
IEBACiAJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMkIxNTFGREU4QjAwQ0Q4
OTEwIC8qIE9wZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3
MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9
OworCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNB
MTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLzsgfTsK
KwkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1
M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAx
MzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3Zlcnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQy
NkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYg
LyogVmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2
MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc2MSw2ICs3NjMsOCBAQAogCQkwRjJCREMyQjE1MUZE
RThCMDBDRDg5MTAgLyogT3BlcmFuZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gT3BlcmFuZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDcz
OEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGM0IzQTE4MTUzRTY4RUYw
MDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2
QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0Myw2ICsyMDQ3LDggQEAKIAkJCQkwRkQ4MkUx
RTE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUx
RjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJMEZDMDk3N0Ux
NDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICovLAorCQkJCTBGM0IzQTE3MTUzRTY4RUYw
MDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgKi8sCisJCQkJMEYzQjNBMTgx
NTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggKi8sCiAJCQkJMEZD
MDk3OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLywK
IAkJCQkwRkMwOTc5QTE0NkE3NzIwMDBDRjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aCAqLywKIAkJCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3Rh
dGUuaCAqLywKQEAgLTI1NzAsNiArMjU3Niw3IEBACiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgz
NkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFG
MDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
RTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjNCM0ExQjE1M0U2OEY0MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzEzMyw2ICszMTQwLDcgQEAKIAkJCQk4NjQyQzUx
MDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5v
bmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNF
RDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2
aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsNyBAQCB2b2lkIEFic3RyYWN0U3Rh
dGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpCiAgICAgYmFzaWNCbG9jay0+Y2ZhSGFzVmlzaXRlZCA9
IHRydWU7CiAgICAgbV9ibG9jayA9IGJhc2ljQmxvY2s7CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsK
KyAgICBtX2ZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CiB9CiAKIHZvaWQgQWJzdHJhY3RTdGF0ZTo6
aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCkBAIC0xNTcsNiArMTU4LDggQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAgIAogICAgIEJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9ibG9jazsgLy8gU2F2ZSB0aGUgYmxvY2sgZm9yIHN1Y2Nlc3NvciBtZXJnaW5nLgogICAg
IAorICAgIGJsb2NrLT5jZmFGb3VuZENvbnN0YW50cyA9IG1fZm91bmRDb25zdGFudHM7CisgICAg
CiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjI1LDEzICsyMjgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3Rh
bnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDogewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
bV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpOwotICAgICAgICAvLyBIYXZlIHRv
IGJlIGNhcmVmdWwgaGVyZSEgSXQncyB0ZW1wdGluZyB0byBjYWxsIHNldCh2YWx1ZSksIGJ1dAot
ICAgICAgICAvLyB0aGF0IHdvdWxkIGJlIHdyb25nLCBzaW5jZSB0aGF0IHdvdWxkIGNvbnN0aXR1
dGUgYSBwcm9vZiB0aGF0IHRoaXMKLSAgICAgICAgLy8gdmFsdWUgd2lsbCBhbHdheXMgaGF2ZSB0
aGUgc2FtZSBzdHJ1Y3R1cmUuIFRoZSB3aG9sZSBwb2ludCBvZiBhIHZhbHVlCi0gICAgICAgIC8v
IGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0aGF0IGl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAt
IGZvciBleGFtcGxlCi0gICAgICAgIC8vIGJldHdlZW4gd2hlbiB3ZSBjb21waWxlIHRoZSBjb2Rl
IGFuZCB3aGVuIHdlIHJ1biBpdC4KLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChwcmVk
aWN0aW9uRnJvbVZhbHVlKHZhbHVlKSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
bV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAgICAgCkBAIC0yNzcsMjAgKzI3NCw2OCBAQCBib29sIEFic3RyYWN0U3Rh
dGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBCaXRYb3I6CiAgICAgY2FzZSBCaXRS
U2hpZnQ6CiAgICAgY2FzZSBCaXRMU2hpZnQ6Ci0gICAgY2FzZSBCaXRVUlNoaWZ0OgorICAgIGNh
c2UgQml0VVJTaGlmdDogeworICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hp
bGQyKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQz
MigpICYmIHJpZ2h0LmlzSW50MzIoKSkgeworICAgICAgICAgICAgaW50MzJfdCBhID0gbGVmdC5h
c0ludDMyKCk7CisgICAgICAgICAgICBpbnQzMl90IGIgPSByaWdodC5hc0ludDMyKCk7CisgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2FzZSBCaXRBbmQ6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgJiBiKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJpdE9yOgorICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIHwgYikpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRYb3I6CisgICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgXiBiKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEJpdFJTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSA+PiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQml0TFNoaWZ0Ogor
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIDw8IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBCaXRVUlNoaWZ0OgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoSlNWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4oYSkgPj4gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50
MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIp
OwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CiAgICAgICAg
IGJyZWFrOworICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBVSW50MzJUb051bWJlcjoKKyAgICBj
YXNlIFVJbnQzMlRvTnVtYmVyOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJl
cigpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2hpbGQuaXNJbnQzMigpKTsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShjaGlsZC5hc1VJbnQzMigpKSk7CisgICAg
ICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGlmICghbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CiAgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAotICAgIGNhc2UgVmFsdWVUb0ludDMyOgor
ICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051
bWJlcigpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQuaXNJbnQzMigpKQorICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoY2hpbGQpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShKU0M6OnRvSW50MzIo
Y2hpbGQuYXNEb3VibGUoKSkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQogICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgZWxzZSBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKQEAgLTMwMCwx
NCArMzQ1LDI5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6Cisg
ICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051
bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoSlNW
YWx1ZTo6RW5jb2RlQXNEb3VibGUsIGNoaWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1f
Zm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CiAgICAgICAgIGJyZWFr
OworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0
aEFkZDogeworICAgICAgICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZh
bHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZh
bHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiBy
aWdodC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpT
VmFsdWUobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAg
bV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwog
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsK
QEAgLTMzMSw2ICszOTEsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVk
IGluZAogICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAg
SlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBK
U1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBp
ZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGxlZnQuYXNOdW1i
ZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMg
PSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3Jh
cGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkBAIC0zNDQsNiArNDExLDEy
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxk
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1
ZSgtY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRy
dWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaC5u
ZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwpAQCAtMzU5LDYgKzQzMiwzNCBAQCBib29s
IEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBBcml0aE1pbjoK
ICAgICBjYXNlIEFyaXRoTWF4OgogICAgIGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgSlNWYWx1
ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVl
IHJpZ2h0ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVm
dCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAg
ICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBkb3VibGUg
YiA9IHJpZ2h0LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewor
ICAgICAgICAgICAgY2FzZSBBcml0aE11bDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KEpTVmFsdWUoYSAqIGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQXJpdGhEaXY6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChKU1ZhbHVlKGEgLyBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEFyaXRoTWluOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcml0aE1heDoKKyAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSA+IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBh
ICsgYikpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhN
b2Q6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGZtb2Qo
YSwgYikpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRT
cGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0pICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTM3MSw3ICs0NzIs
MTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgICAgICAKLSAgICBjYXNlIEFyaXRoQWJzOgorICAgIGNhc2Ug
QXJpdGhBYnM6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEo
KSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShmYWJzKGNoaWxkLmFzTnVt
YmVyKCkpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkg
ewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMy
KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKQEAg
LTM4MCwxMyArNDg3LDM0IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7
CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CiAgICAgICAg
IGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAotICAgIGNhc2UgQXJpdGhTcXJ0OgorICAgIGNh
c2UgQXJpdGhTcXJ0OiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7
CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoc3FydChjaGlsZC5h
c051bWJlcigpKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQ
cmVkaWN0RG91YmxlKTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAgICAgCiAgICAg
Y2FzZSBMb2dpY2FsTm90OiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkQ29uc3QpIHsKKyAgICAg
ICAgICAgIGlmIChjaGlsZENvbnN0LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoIWNoaWxkQ29uc3QuYXNOdW1iZXIoKSkpOworICAg
ICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoaWxkQ29uc3QuaXNCb29sZWFu
KCkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoIWNo
aWxkQ29uc3QuYXNCb29sZWFuKCkpKTsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRz
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQogICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CiAgICAgICAg
IGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKGNoaWxkLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Qm9vbGVhbik7CkBAIC00MTAs
NiArNTM4LDMzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICBjYXNlIElzU3RyaW5nOgogICAgIGNhc2UgSXNPYmplY3Q6CiAgICAgY2FzZSBJc0Z1bmN0aW9u
OiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVl
KCk7CisgICAgICAgIGlmIChjaGlsZCkgeworICAgICAgICAgICAgYm9vbCBmb3VuZENvbnN0YW50
ID0gdHJ1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBj
YXNlIElzVW5kZWZpbmVkOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
anNCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjaGlsZC5pc0NlbGwoKQorICAgICAgICAg
ICAgICAgICAgICA/IGNoaWxkLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKCkKKyAgICAgICAgICAgICAgICAgICAgOiBjaGlsZC5pc1VuZGVm
aW5lZCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzQm9v
bGVhbjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihj
aGlsZC5pc0Jvb2xlYW4oKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBJc051bWJlcjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpz
Qm9vbGVhbihjaGlsZC5pc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIElzU3RyaW5nOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoanNCb29sZWFuKGlzSlNTdHJpbmcoY2hpbGQpKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGZvdW5kQ29uc3RhbnQpIHsKKyAgICAgICAgICAgICAg
ICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtNDE5LDYgKzU3NCwzNSBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBDb21wYXJl
R3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVyRXE6CiAgICAgY2FzZSBDb21wYXJlRXE6
IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0Q29uc3QgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZh
bHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDIo
KSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGxlZnRDb25zdCAmJiByaWdodENvbnN0ICYmIGxlZnRD
b25zdC5pc051bWJlcigpICYmIHJpZ2h0Q29uc3QuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAg
ZG91YmxlIGEgPSBsZWZ0Q29uc3QuYXNOdW1iZXIoKTsKKyAgICAgICAgICAgIGRvdWJsZSBiID0g
cmlnaHRDb25zdC5hc051bWJlcigpOworICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsK
KyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6CisgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA8IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToKKyAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhIDw9IGIpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CisgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA+IGIpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXJFcToKKyAgICAgICAgICAgICAg
ICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhID49IGIpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUVxOgorICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGEgPT0gYikpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGlj
dEJvb2xlYW4pOwogICAgICAgICAKICAgICAgICAgTm9kZSYgbGVmdCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV07CkBAIC00NzAsOSArNjU0LDE3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCi0gICAg
Y2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6IHsKKyAgICAg
ICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAg
ICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAg
ICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIo
KSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4obGVmdC5h
c051bWJlcigpID09IHJpZ2h0LmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25z
dGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAgIGJyZWFrOworICAg
IH0KICAgICAgICAgCiAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3RyaW5nKTsKQEAgLTcyMSw2ICs5MTMsMTMg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKKyAgICAgICAgSlNWYWx1
ZSBjaGlsZENvbnN0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBp
ZiAoY2hpbGRDb25zdCAmJiBjaGlsZENvbnN0LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoY2hpbGRDb25zdCk7CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CiAgICAgICAgIGlm
IChjaGlsZC5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTEzOTQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OSw2ICsxODksNyBAQCBwcml2YXRlOgogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFs
dWU+IG1fdmFyaWFibGVzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2hh
dmVTdHJ1Y3R1cmVzOworICAgIGJvb2wgbV9mb3VuZENvbnN0YW50czsKICAgICAKICAgICBib29s
IG1faXNWYWxpZDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNywxMCArMzE3LDEx
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7CiAgICAgICAgIG1fdHlwZSA9IFByZWRp
Y3ROb25lOwogICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBtX3ZhbHVlID0g
SlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaXNDbGVhcigpCisgICAgYm9vbCBpc0NsZWFyKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3R5cGUgPT0gUHJlZGljdE5vbmUgJiYgbV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwog
ICAgIH0KQEAgLTMyOSw2ICszMzAsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgewog
ICAgICAgICBtX3R5cGUgPSBQcmVkaWN0VG9wOwogICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9w
KCk7CisgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAgICAgCkBAIC0zNDEsMTEgKzM0MywyNiBAQCBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjbG9iYmVyVmFsdWUoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBpc1RvcCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV90eXBlID09IFByZWRpY3RUb3AgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKTsKICAgICB9CiAgICAg
CisgICAgYm9vbCB2YWx1ZUlzVG9wKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92
YWx1ZSAmJiBtX3R5cGU7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBB
YnN0cmFjdFZhbHVlIHRvcCgpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsK
QEAgLTM1NSwxMSArMzcyLDE5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2
b2lkIHNldChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIo
KTsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUu
YWRkKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIGlmICghIXZhbHVlICYm
IHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVy
ZSEgSXQncyB0ZW1wdGluZyB0byBzZXQgdGhlIHN0cnVjdHVyZSB0byB0aGUKKyAgICAgICAgICAg
IC8vIHZhbHVlJ3Mgc3RydWN0dXJlLCBidXQgdGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2UgdGhh
dCB3b3VsZAorICAgICAgICAgICAgLy8gY29uc3RpdHV0ZSBhIHByb29mIHRoYXQgdGhpcyB2YWx1
ZSB3aWxsIGFsd2F5cyBoYXZlIHRoZSBzYW1lCisgICAgICAgICAgICAvLyBzdHJ1Y3R1cmUuIFRo
ZSB3aG9sZSBwb2ludCBvZiBhIHZhbHVlIGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0aGF0CisgICAg
ICAgICAgICAvLyBpdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgLSBmb3IgZXhhbXBsZSBiZXR3
ZWVuIHdoZW4gd2UgY29tcGlsZQorICAgICAgICAgICAgLy8gdGhlIGNvZGUgYW5kIHdoZW4gd2Ug
cnVuIGl0LgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBt
X3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IHZh
bHVlOwogICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAgLTM3
MCw2ICszOTUsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1fc3RydWN0dXJl
LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAgbV90eXBlID0gcHJlZGljdGlvbkZy
b21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAg
ICAgICAgCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC0zODEsMTcgKzQw
NywyNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fdHlwZSA9IHR5cGU7CisgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9zdHJ1
Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3Ro
ZXIubV90eXBlCisgICAgICAgICAgICAmJiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVy
ZQorICAgICAgICAgICAgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwogICAgIH0KICAgICAK
ICAgICBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKQogICAgIHsKLSAgICAg
ICAgYm9vbCByZXN1bHQgPSBtZXJnZVByZWRpY3Rpb24obV90eXBlLCBvdGhlci5tX3R5cGUpIHwg
bV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0dXJlKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0IHw9IG1lcmdlUHJlZGljdGlvbihtX3R5cGUsIG90
aGVyLm1fdHlwZSk7CisgICAgICAgIHJlc3VsdCB8PSBtX3N0cnVjdHVyZS5hZGRBbGwob3RoZXIu
bV9zdHJ1Y3R1cmUpOworICAgICAgICBpZiAobV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlKQorICAg
ICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQwMiw2ICs0MzUsNyBAQCBzdHJ1
Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIAogICAgICAgICBpZiAodHlwZSAmIFByZWRpY3RD
ZWxsKQogICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBtX3ZhbHVl
ID0gSlNWYWx1ZSgpOwogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC00
MTcsNiArNDUxLDEwIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8gc3VyZSB0
aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFByZWRpY3RlZFR5cGUgbmVlZHMg
dG8gYmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBm
cm9tIHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUp
OworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiAhdmFsaWRhdGUobV92YWx1ZSkp
CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogICAgIH0KICAgICAKQEAgLTQzMSw2ICs0NjksMTAgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIGZpbHRlcmluZyBk
b2VzIHRoZSByaWdodCB0aGluZyBpcyB0byBmaWx0ZXIgb24KICAgICAgICAgLy8gdGhlIG5ldyB0
eXBlIChOb25lKSByYXRoZXIgdGhhbiB0aGUgb25lIHBhc3NlZCAoQXJyYXkpLgogICAgICAgICBt
X3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKworICAgICAgICBpZiAoISFtX3ZhbHVlICYmICF2
YWxpZGF0ZShtX3ZhbHVlKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIApAQCAtNDM5LDYgKzQ4MSw5IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgCisgICAgICAgIGlmICghIW1fdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gbV92YWx1ZSA9PSB2YWx1ZTsKKyAgICAgICAgCiAgICAgICAgIGlmIChtZXJnZVBy
ZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC00NTAsNyArNDk1LDcgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAobV9zdHJ1Y3R1cmUuaXNUb3AoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKSB7CisgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobV90eXBlICYgUHJlZGljdENlbGwpOwogICAgICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgIH0KQEAgLTQ2Myw2ICs1MDgsMTIgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAg
ICBpZiAoIShtX3R5cGUgJiBQcmVkaWN0Q2VsbCkpCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgCisgICAgICAgIGlmIChpc0NsZWFyKCkpCisgICAg
ICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1
ZSkKKyAgICAgICAgICAgIEFTU0VSVChtZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlv
bkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICAgICAgCiAgICAgICAgIC8vIE5v
dGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHByZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4g
VGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFu
ZCB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAog
ICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0
IHdvdWxkIG9ubHkgaW5jcmVhc2UgdGhlIGNvbXB1dGF0aW9uYWwKQEAgLTQ3MywxMSArNTI0LDE0
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LCAi
KCVzLCAiLCBwcmVkaWN0aW9uVG9TdHJpbmcobV90eXBlKSk7CiAgICAgICAgIG1fc3RydWN0dXJl
LmR1bXAob3V0KTsKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIGZwcmludGYo
b3V0LCAiLCAlcyIsIG1fdmFsdWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGZwcmludGYob3V0
LCAiKSIpOwogICAgIH0KIAogICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7
CiAgICAgUHJlZGljdGVkVHlwZSBtX3R5cGU7CisgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
MTAgKzExNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGNoaWxkKDIpID0gY2hpbGQzOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTm9kZUluZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNo
aWxkMiwgTm9kZUluZGV4IGNoaWxkMykKKyAgICB2b2lkIGluaXRpYWxpemUoTm9kZUluZGV4IGNo
aWxkMSA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMiA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxk
MyA9IE5vTm9kZSkKICAgICB7CiAgICAgICAgIGluaXRpYWxpemUoRWRnZShjaGlsZDEpLCBFZGdl
KGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVzZXQoKQor
ICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIG1fa2luZCA9IEZpeGVkOworI2Vu
ZGlmCisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBmaXJzdENo
aWxkKCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0
IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgICAgICAsIGlzT1NSVGFyZ2V0
KGZhbHNlKQogICAgICAgICAsIGNmYUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgICAgICwgY2ZhU2hv
dWxkUmV2aXNpdChmYWxzZSkKKyAgICAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgaXNMaW5rZWQoZmFsc2UpCiAjZW5kaWYKQEAg
LTcwLDYgKzcxLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4Pgog
ICAgIGJvb2wgaXNPU1JUYXJnZXQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wg
Y2ZhU2hvdWxkUmV2aXNpdDsKKyAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICBib29sIGlzTGlua2VkOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw2ICsxMjMsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9
CiAgICAgCisgICAgTm9kZUluZGV4IGNvbnN0YW50Q1NFKE5vZGUmIG5vZGUpCisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgeworICAg
ICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAg
ICAgICAgTm9kZSYgb3RoZXJOb2RlID0gbV9ncmFwaFtpbmRleF07CisgICAgICAgICAgICBpZiAo
b3RoZXJOb2RlLm9wKCkgIT0gSlNDb25zdGFudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG90aGVyTm9kZS5jb25zdGFudE51bWJlcigp
ICE9IG5vZGUuY29uc3RhbnROdW1iZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBOb05vZGU7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNQcmVkaWN0ZWROdW1lcmlj
YWwoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwpAQCAtNTk3LDYgKzYxMywxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAg
ICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdp
bGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCisgICAgICAgICAgICAvLyB3aGljaCBtYXkg
cmVzdWx0IGluIGR1cGxpY2F0ZWQgY29uc3RhbnRzLiBXZSB1c2UgQ1NFIHRvIGNsZWFuIHRoaXMg
dXAuCisgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChjb25zdGFudENTRShub2RlKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW1wdXJlQ1NFKG5vZGUpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQWJzdHJhY3RTdGF0
ZS5oIgorI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJERkdHcmFwaC5oIgor
I2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhh
c2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIENvbnN0YW50Rm9sZGluZ1BoYXNlKEdy
YXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNvbnN0YW50IGZvbGRpbmciKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgQWJzdHJh
Y3RTdGF0ZSBzdGF0ZShtX2dyYXBoKTsKKyAgICAgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4g
aW5zZXJ0aW9uU2V0OworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRl
eCkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Js
b2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFu
dHMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzdGF0ZS5iZWdpbkJh
c2ljQmxvY2soYmxvY2spOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sg
PSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAg
ICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAg
ICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2sp
OworICAgICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CisgICAg
ICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICAg
ICAgfHwgKG5vZGUuZmxhZ3MoKSAmIChOb2RlQ2xvYmJlcnNXb3JsZCB8IE5vZGVNaWdodENsb2Ji
ZXIpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IHN0YXRlLmZvck5vZGUobm9kZUluZGV4KS52YWx1ZSgpOworICAgICAgICAg
ICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9tLCBub2RlLmNvZGVPcmlnaW4pOworICAgICAg
ICAgICAgICAgIHBoYW50b20uY2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuOworICAgICAgICAgICAg
ICAgIHBoYW50b20ucmVmKCk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252ZXJ0VG9Db25z
dGFudChub2RlSW5kZXgsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBOb2RlSW5kZXggcGhhbnRv
bU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBw
ZW5kKHBoYW50b20pOworICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJ
bkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0
YXRlLnJlc2V0KCk7CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgqYmxvY2spOwor
ICAgICAgICB9CisgICAgfQorfTsKKwordm9pZCBwZXJmb3JtQ29uc3RhbnRGb2xkaW5nKEdyYXBo
JiBncmFwaCkKK3sKKyAgICBydW5QaGFzZTxDb25zdGFudEZvbGRpbmdQaGFzZT4oZ3JhcGgpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2VfaAorI2RlZmluZSBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShERkdfSklU
KQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisv
LyBDRkEtYmFzZWQgY29uc3RhbnQgZm9sZGluZy4gV2Fsa3MgdGhvc2UgYmxvY2tzIG1hcmtlZCBi
eSB0aGUgQ0ZBIGFzIGhhdmluZworLy8gaW5mZXJyZWQgY29uc3RhbnRzLCBhbmQgcmVwbGFjZXMg
dGhvc2Ugbm9kZXMgd2l0aCBjb25zdGFudHMgd2hpbHN0IGluamVjdGluZworLy8gUGhhbnRvbSBu
b2RlcyB0byBrZWVwIHRoZSBjaGlsZHJlbiBhbGl2ZSAod2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBP
U1IgZXhpdCkuCisKK3ZvaWQgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhHcmFwaCYpOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2Vu
ZGlmIC8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiREZHQnl0ZUNvZGVQYXJzZXIuaCIKICNpbmNsdWRlICJERkdDRkFQaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBoYXNlLmgiCisjaW5jbHVkZSAiREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdGaXh1cFBoYXNlLmgiCiAjaW5jbHVkZSAiREZHSklU
Q29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5oIgpA
QCAtNjIsOSArNjMsMTAgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxl
TQogICAgIHBlcmZvcm1SZWR1bmRhbnRQaGlFbGltaW5hdGlvbihkZmcpOwogICAgIHBlcmZvcm1Q
cmVkaWN0aW9uUHJvcGFnYXRpb24oZGZnKTsKICAgICBwZXJmb3JtRml4dXAoZGZnKTsKKyAgICBw
ZXJmb3JtQ0ZBKGRmZyk7CisgICAgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOwogICAgIHBl
cmZvcm1DU0UoZGZnKTsKICAgICBwZXJmb3JtVmlydHVhbFJlZ2lzdGVyQWxsb2NhdGlvbihkZmcp
OwotICAgIHBlcmZvcm1DRkEoZGZnKTsKIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
ICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBvcHRpbWl6YXRpb246XG4iKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEz
NiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGRlcmVmKG5vZGUuY2hpbGQzKCkpOwogICAgICAgICBu
b2RlLmNoaWxkcmVuLmNoaWxkMygpID0gRWRnZSgpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
bnZlcnRUb0NvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGNvbnN0YW50TnVt
YmVyKQorICAgIHsKKyAgICAgICAgYXQobm9kZUluZGV4KS5jb252ZXJ0VG9Db25zdGFudChjb25z
dGFudE51bWJlcik7CisgICAgfQorICAgIAorICAgIHZvaWQgY29udmVydFRvQ29uc3RhbnQoTm9k
ZUluZGV4IG5vZGVJbmRleCwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGNvbnZlcnRU
b0NvbnN0YW50KG5vZGVJbmRleCwgbV9jb2RlQmxvY2stPmFkZE9yRmluZENvbnN0YW50KHZhbHVl
KSk7CisgICAgfQogCiAgICAgLy8gQ29kZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93
IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFt
ZXMpLgogICAgIHZvaWQgZHVtcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEluc2VydGlvbjxFbGVtZW50VHlwZT4mIGluc2VydGlv
biA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9uc107CiAgICAgICAgICAgICBzaXplX3Qg
Zmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsgaW5kZXhJbkluc2VydGlvbnM7CiAgICAg
ICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRleEluSW5zZXJ0aW9ucyArIDE7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4OyBpLS0gPiBmaXJzdEluZGV4OykKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsYXN0SW5kZXg7IC0taSA+IGZpcnN0SW5kZXg7KQog
ICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25baV0gPSBjb2xsZWN0aW9uW2kgLSBpbmRleE9mZnNl
dF07CiAgICAgICAgICAgICBjb2xsZWN0aW9uW2ZpcnN0SW5kZXhdID0gaW5zZXJ0aW9uLmVsZW1l
bnQoKTsKICAgICAgICAgICAgIGxhc3RJbmRleCA9IGZpcnN0SW5kZXg7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsMTYg
QEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogICAgIAor
ICAgIHZvaWQgY29udmVydFRvQ29uc3RhbnQodW5zaWduZWQgY29uc3RhbnROdW1iZXIpCisgICAg
eworICAgICAgICBtX29wID0gSlNDb25zdGFudDsKKyAgICAgICAgaWYgKG1fZmxhZ3MgJiBOb2Rl
TXVzdEdlbmVyYXRlKQorICAgICAgICAgICAgbV9yZWZDb3VudC0tOworICAgICAgICBtX2ZsYWdz
ICY9IH5Ob2RlTXVzdEdlbmVyYXRlOworICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVtYmVy
OworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAgIH0KKyAgICAKICAgICBKU0NlbGwqIHdl
YWtDb25zdGFudCgpCiAgICAgewogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+
KG1fb3BJbmZvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSlNWYWx1
ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAgICByZXR1cm47CiB9CiAKLWNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKK2NoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkgY29uc3QK
IHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIg
ZGVzY3JpcHRpb25bc2l6ZV07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSAgICAgICAgY2hhciogZGVzY3JpcHRp
b24oKTsKKyAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKSBjb25zdDsKIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBj
b25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137652</attachid>
            <date>2012-04-17 21:13:36 -0700</date>
            <delta_ts>2012-04-18 00:18:14 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>constprop_patch_4.diff</filename>
            <type>text/plain</type>
            <size>42041</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NDc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEyLTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlcyBBYnN0cmFjdFZhbHVl
IHRvIGJlIGFibGUgdG8gaG9sZCBhICJzZXQiIG9mIGNvbnN0YW50cywgd2hlcmUKKyAgICAgICAg
dGhlIG1heGltdW0gc2V0IHNpemUgaXMgMSAtIHNvIG1lcmdpbmcgYSB2YWx1ZSBjb250YWluaW5n
IGNvbnN0YW50IEEKKyAgICAgICAgd2l0aCBhbm90aGVyIHZhbHVlIGNvbnRhaW5pbmcgY29uc3Rh
bnQgQiB3aGVyZSBBICE9IEIgd2lsbCByZXN1bHQgaW4KKyAgICAgICAgdGhlIEFic3RyYWN0VmFs
dWUgY2xhaW1pbmcgdGhhdCBpdCBkb2VzIG5vdCBrbm93IGFueSBjb25zdGFudHMgKGkuZS4KKyAg
ICAgICAgaXQnbGwganVzdCBoYXZlIGEgcHJlZGljdGVkIHR5cGUgYW5kIHBvc3NpYmxlIGEgc3Ry
dWN0dXJlKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGEgY29uc3RhbnQgZm9sZGluZyBwaGFz
ZSB0aGF0IHVzZXMgdGhpcyBuZXcgaW5mb3JtYXRpb24gdG8KKyAgICAgICAgcmVwbGFjZSBwdXJl
IG9wZXJhdGlvbnMga25vd24gdG8gaGF2ZSBjb25zdGFudCByZXN1bHRzIHdpdGgKKyAgICAgICAg
SlNDb25zdGFudHMuIFRoaXMgaXMgT1NSLWV4aXQtYXdhcmUsIGluIHRoYXQgaXQgd2lsbCBwcmVw
ZW5kIGEgUGhhbnRvbQorICAgICAgICB0aGF0IHJlZmVycyB0byBhbGwgb2YgdGhlIGtpZHMgb2Yg
dGhlIG5vZGUgd2UgcmVwbGFjZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0
ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpl
bmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJhY3RT
dGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFZhbHVlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RW
YWx1ZTo6aXNDbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRv
cCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclZhbHVlKToKKyAg
ICAgICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OnZhbHVlSXNUb3ApOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0VmFsdWU6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWRqYWNl
bmN5TGlzdC5oOgorICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OmluaXRpYWxpemUp
OgorICAgICAgICAoQWRqYWNlbmN5TGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5
TGlzdDo6cmVzZXQpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgIChCYXNpY0Jsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChDb25zdGFu
dEZvbGRpbmdQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5n
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaDogQWRkZWQuCisgICAg
ICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAg
ICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNl
dDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAx
Mi0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgbm90IGF0dGVtcHQgdG8gZ2V0IHJhcmUgY2FzZSBjb3VudHMgZm9yIG9wX21vZCBvbiBB
Uk0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExMzk0
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAogICAgIGRm
Zy9ERkdDRkFQaGFzZS5jcHAKKyAgICBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCiAg
ICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcAogICAgIGRmZy9ERkdDU0VQaGFzZS5j
cHAKICAgICBkZmcvREZHRHJpdmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIFwKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBcCiAgICAgZGZnL0RGR0NGQVBoYXNlLmNwcCBcCisgICAgZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCBcCiAgICAg
ZGZnL0RGR0NTRVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0RyaXZlci5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBACiAJCTBGMkJEQzJDMTUxRkRFOTEwMENEODkxMCAv
KiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1
NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8q
IERGR0NvZGVCbG9ja3MuY3BwICovOyB9OworCQkwRjNCM0ExQTE1M0U2OEYyMDAzRUQwRkYgLyog
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcCAqLzsgfTsKKwkJMEYzQjNBMUIxNTNFNjhGNDAwM0VEMEZGIC8qIERG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUxNDYwQ0JBQjAw
MTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJl
Z2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIxNDYwQ0Q2RTAw
MTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc2MSw2ICs3
NjMsOCBAQAogCQkwRjJCREMyQjE1MUZERThCMDBDRDg5MTAgLyogT3BlcmFuZHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmFuZHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAv
KiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0Nv
ZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjNBMTcxNTNFNjhF
RjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDsgcGF0aCA9
IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5oOyBwYXRoID0gZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBWYWx1ZVJlY292
ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVjb3ZlcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaXJ0
dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNEExNDYw
Q0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA0Myw2
ICsyMDQ3LDggQEAKIAkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0
aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0
aWVzLmggKi8sCiAJCQkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0NvbW1vbi5oICov
LAorCQkJCTBGM0IzQTE3MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAgKi8sCisJCQkJMEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmggKi8sCiAJCQkJMEZDMDk3OUQxNDZCMjcxRTAwQ0YyNDQyIC8qIERGR0NvcnJl
Y3RhYmxlSnVtcFBvaW50LmNwcCAqLywKIAkJCQkwRkMwOTc5QTE0NkE3NzIwMDBDRjI0NDIgLyog
REZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCAqLywKIAkJCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0
NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAqLywKQEAgLTI1NzAsNiArMjU3Niw3IEBACiAJ
CQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJs
ZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCM0ExQjE1M0U2OEY0MDAzRUQw
RkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMzEzMyw2
ICszMTQwLDcgQEAKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVnRXhwQ2FjaGVk
UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NDJDNTEyMTUxQzA4M0QwMDQ2RDRFRiAv
KiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYzQzZEOUMxNTIx
MTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNiAr
OTEsNyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNpCiAgICAgYmFz
aWNCbG9jay0+Y2ZhSGFzVmlzaXRlZCA9IHRydWU7CiAgICAgbV9ibG9jayA9IGJhc2ljQmxvY2s7
CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZvdW5kQ29uc3RhbnRzID0gZmFsc2U7CiB9
CiAKIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgpCkBAIC0xNTcs
NiArMTU4LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1lcmdlTQogICAg
IAogICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9jazsgLy8gU2F2ZSB0aGUgYmxvY2sgZm9y
IHN1Y2Nlc3NvciBtZXJnaW5nLgogICAgIAorICAgIGJsb2NrLT5jZmFGb3VuZENvbnN0YW50cyA9
IG1fZm91bmRDb25zdGFudHM7CisgICAgCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsKICAgICAgICAg
cmVzZXQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI1LDEzICsyMjgsNyBAQCBib29s
IEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgc3dpdGNoIChub2RlLm9w
KCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25zdGFudDogewot
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlSW5k
ZXgpOwotICAgICAgICAvLyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSEgSXQncyB0ZW1wdGluZyB0
byBjYWxsIHNldCh2YWx1ZSksIGJ1dAotICAgICAgICAvLyB0aGF0IHdvdWxkIGJlIHdyb25nLCBz
aW5jZSB0aGF0IHdvdWxkIGNvbnN0aXR1dGUgYSBwcm9vZiB0aGF0IHRoaXMKLSAgICAgICAgLy8g
dmFsdWUgd2lsbCBhbHdheXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUuIFRoZSB3aG9sZSBwb2lu
dCBvZiBhIHZhbHVlCi0gICAgICAgIC8vIGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0aGF0IGl0IG1h
eSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAtIGZvciBleGFtcGxlCi0gICAgICAgIC8vIGJldHdlZW4g
d2hlbiB3ZSBjb21waWxlIHRoZSBjb2RlIGFuZCB3aGVuIHdlIHJ1biBpdC4KLSAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKSk7CisgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFudChub2RlSW5k
ZXgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC0yNzcsMjAgKzI3
NCw2OCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2Fz
ZSBCaXRYb3I6CiAgICAgY2FzZSBCaXRSU2hpZnQ6CiAgICAgY2FzZSBCaXRMU2hpZnQ6Ci0gICAg
Y2FzZSBCaXRVUlNoaWZ0OgorICAgIGNhc2UgQml0VVJTaGlmdDogeworICAgICAgICBKU1ZhbHVl
IGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUg
cmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYmIHJpZ2h0LmlzSW50MzIoKSkgeworICAgICAg
ICAgICAgaW50MzJfdCBhID0gbGVmdC5hc0ludDMyKCk7CisgICAgICAgICAgICBpbnQzMl90IGIg
PSByaWdodC5hc0ludDMyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAg
ICAgICAgICAgY2FzZSBCaXRBbmQ6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChKU1ZhbHVlKGEgJiBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIEJpdE9yOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNW
YWx1ZShhIHwgYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBC
aXRYb3I6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEg
XiBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJpdFJTaGlm
dDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSA+PiBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oYikpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgQml0TFNoaWZ0OgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoSlNWYWx1ZShhIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OgorICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
YSkgPj4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCi0gICAgY2Fz
ZSBVSW50MzJUb051bWJlcjoKKyAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7CisgICAgICAgIEpT
VmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlm
IChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBBU1NFUlQoY2hpbGQu
aXNJbnQzMigpKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShj
aGlsZC5hc1VJbnQzMigpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmICghbm9kZS5jYW5TcGVj
dWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3REb3VibGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAot
ICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7CisgICAgICAg
IEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQu
aXNJbnQzMigpKQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoY2hpbGQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoSlNWYWx1ZShKU0M6OnRvSW50MzIoY2hpbGQuYXNEb3VibGUoKSkpKTsKKyAgICAgICAgICAg
IG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKICAgICAgICAgZWxzZSBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVOdW1iZXIoKSkKQEAgLTMwMCwxNCArMzQ1LDI5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKLSAg
ICBjYXNlIEludDMyVG9Eb3VibGU6CisgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7CisgICAgICAg
IEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGNoaWxkLmFzTnVt
YmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGlj
dERvdWJsZSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogeworICAgICAgICBKU1ZhbHVlIGxlZnQgPSBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0
ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUobGVmdC5hc051bWJlcigpICsgcmlnaHQuYXNO
dW1iZXIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91bGRTcGVj
dWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigp
KS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTMzMSw2ICszOTEsMTMgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIH0KICAgICAgICAgICAgIAogICAgIGNh
c2UgQXJpdGhTdWI6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNoaWxk
MSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNoaWxk
MigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVy
KCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChKU1ZhbHVlKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkpKTsKKyAgICAg
ICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2Rl
KSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJ
bnQzMik7CkBAIC0zNDQsNiArNDExLDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhOZWdhdGU6IHsKKyAg
ICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAg
ICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZSgtY2hpbGQuYXNOdW1iZXIoKSkpOworICAgICAgICAg
ICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUp
KSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50
MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwpA
QCAtMzU5LDYgKzQzMiwzNCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgY2FzZSBBcml0aE1pbjoKICAgICBjYXNlIEFyaXRoTWF4OgogICAgIGNhc2UgQXJp
dGhNb2Q6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52
YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNoaWxkMigpKS52
YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVtYmVyKCkgJiYg
cmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0LmFzTnVtYmVy
KCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVyKCk7CisgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2FzZSBBcml0aE11bDoKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSAqIGIpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhEaXY6CisgICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgLyBiKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFyaXRoTWluOgorICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIDwgYiA/IGEgOiAoYiA8PSBhID8gYiA6
IGEgKyBiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBcml0
aE1heDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSA+
IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBhICsgYikpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgQXJpdGhNb2Q6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChKU1ZhbHVlKGZtb2QoYSwgYikpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
X2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pICYmIG5vZGUuY2FuU3BlY3VsYXRlSW50ZWdl
cigpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKQEAgLTM3MSw3ICs0NzIsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAKLSAgICBj
YXNlIEFyaXRoQWJzOgorICAgIGNhc2UgQXJpdGhBYnM6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGls
ZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYm
IGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShmYWJzKGNoaWxkLmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlm
IChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSAmJiBub2Rl
LmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTM4MCwxMyArNDg3LDM0IEBAIGJvb2wgQWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdERvdWJsZSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAotICAg
IGNhc2UgQXJpdGhTcXJ0OgorICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAgIEpTVmFsdWUg
Y2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGls
ZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KEpTVmFsdWUoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgbV9mb3Vu
ZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBMb2dpY2FsTm90OiB7CisgICAgICAgIEpTVmFs
dWUgY2hpbGRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAg
aWYgKGNoaWxkQ29uc3QpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZENvbnN0LmlzTnVtYmVyKCkp
IHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoIWNoaWxk
Q29uc3QuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0
cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGNoaWxkQ29uc3QuaXNCb29sZWFuKCkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KEpTVmFsdWUoIWNoaWxkQ29uc3QuYXNCb29sZWFuKCkpKTsKKyAgICAgICAg
ICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV07CiAgICAgICAgIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKGNoaWxkLnBy
ZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0Qm9vbGVhbik7CkBAIC00MTAsNiArNTM4LDMzIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIElzU3RyaW5nOgogICAgIGNhc2UgSXNPYmpl
Y3Q6CiAgICAgY2FzZSBJc0Z1bmN0aW9uOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCkgeworICAgICAg
ICAgICAgYm9vbCBmb3VuZENvbnN0YW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgorICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBj
aGlsZC5pc0NlbGwoKQorICAgICAgICAgICAgICAgICAgICA/IGNoaWxkLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkKKyAgICAgICAgICAg
ICAgICAgICAgOiBjaGlsZC5pc1VuZGVmaW5lZCgpKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIElzQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KGpzQm9vbGVhbihjaGlsZC5pc0Jvb2xlYW4oKSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc051bWJlcjoKKyAgICAgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihjaGlsZC5pc051bWJlcigpKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIElzU3RyaW5nOgorICAgICAgICAg
ICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGlzSlNTdHJpbmcoY2hpbGQp
KSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZvdW5kQ29u
c3RhbnQpIHsKKyAgICAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtNDE5LDYgKzU3NCwzNSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgY2FzZSBDb21wYXJlR3JlYXRlcjoKICAgICBjYXNlIENvbXBhcmVHcmVhdGVy
RXE6CiAgICAgY2FzZSBDb21wYXJlRXE6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0Q29uc3QgPSBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHRDb25z
dCA9IGZvck5vZGUobm9kZS5jaGlsZDIoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGxlZnRDb25z
dCAmJiByaWdodENvbnN0ICYmIGxlZnRDb25zdC5pc051bWJlcigpICYmIHJpZ2h0Q29uc3QuaXNO
dW1iZXIoKSkgeworICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0Q29uc3QuYXNOdW1iZXIoKTsK
KyAgICAgICAgICAgIGRvdWJsZSBiID0gcmlnaHRDb25zdC5hc051bWJlcigpOworICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3M6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA8IGIpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUxlc3NFcToK
KyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihhIDw9IGIp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdyZWF0
ZXI6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oYSA+
IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29tcGFyZUdy
ZWF0ZXJFcToKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVh
bihhID49IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ29t
cGFyZUVxOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFu
KGEgPT0gYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOwogICAgICAgICAKICAgICAgICAgTm9k
ZSYgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CkBAIC00NzAsOSArNjU0LDE3IEBAIGJv
b2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgICAgICAgICAgCi0gICAgY2FzZSBDb21wYXJlU3RyaWN0RXE6CisgICAgY2FzZSBD
b21wYXJlU3RyaWN0RXE6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNo
aWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVt
YmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChqc0Jvb2xlYW4obGVmdC5hc051bWJlcigpID09IHJpZ2h0LmFzTnVtYmVyKCkpKTsK
KyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0Qm9vbGVh
bik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBTdHJpbmdDaGFy
Q29kZUF0OgogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0U3Ry
aW5nKTsKQEAgLTcyMSw2ICs5MTMsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgVG9Qcmlt
aXRpdmU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZENvbnN0ID0gZm9yTm9kZShub2RlLmNoaWxk
MSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hpbGRDb25zdCAmJiBjaGlsZENvbnN0LmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoY2hpbGRDb25zdCk7
CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBOb2RlJiBjaGlsZCA9IG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV07CiAgICAgICAgIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkp
IHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQz
Mik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
aAkocmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksNyBAQCBwcml2YXRlOgog
ICAgIE9wZXJhbmRzPEFic3RyYWN0VmFsdWU+IG1fdmFyaWFibGVzOwogICAgIEJhc2ljQmxvY2sq
IG1fYmxvY2s7CiAgICAgYm9vbCBtX2hhdmVTdHJ1Y3R1cmVzOworICAgIGJvb2wgbV9mb3VuZENv
bnN0YW50czsKICAgICAKICAgICBib29sIG1faXNWYWxpZDsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTEzOTQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMxNywxMCArMzE3LDExIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7
CiAgICAgICAgIG1fdHlwZSA9IFByZWRpY3ROb25lOwogICAgICAgICBtX3N0cnVjdHVyZS5jbGVh
cigpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNDbGVhcigpCisgICAgYm9vbCBpc0NsZWFy
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gUHJlZGljdE5vbmUgJiYg
bV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgIH0KQEAgLTMyOSw2ICszMzAsNyBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgewogICAgICAgICBtX3R5cGUgPSBQcmVkaWN0VG9wOwogICAg
ICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CisgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7
CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCkBAIC0zNDEsMTEgKzM0
MywyNiBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjbG9iYmVyVmFsdWUoKQorICAgIHsKKyAgICAgICAg
bV92YWx1ZSA9IEpTVmFsdWUoKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBpc1RvcCgpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV90eXBlID09IFByZWRpY3RUb3AgJiYgbV9zdHJ1Y3R1
cmUuaXNUb3AoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCB2YWx1ZUlzVG9wKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhbV92YWx1ZSAmJiBtX3R5cGU7CisgICAgfQorICAgIAorICAg
IEpTVmFsdWUgdmFsdWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7Cisg
ICAgfQorICAgIAogICAgIHN0YXRpYyBBYnN0cmFjdFZhbHVlIHRvcCgpCiAgICAgewogICAgICAg
ICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKQEAgLTM1NSwxMSArMzcyLDE5IEBAIHN0cnVjdCBBYnN0
cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lkIHNldChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQot
ICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuYWRkKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7
CisgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAv
LyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSEgSXQncyB0ZW1wdGluZyB0byBzZXQgdGhlIHN0cnVj
dHVyZSB0byB0aGUKKyAgICAgICAgICAgIC8vIHZhbHVlJ3Mgc3RydWN0dXJlLCBidXQgdGhhdCB3
b3VsZCBiZSB3cm9uZywgc2luY2UgdGhhdCB3b3VsZAorICAgICAgICAgICAgLy8gY29uc3RpdHV0
ZSBhIHByb29mIHRoYXQgdGhpcyB2YWx1ZSB3aWxsIGFsd2F5cyBoYXZlIHRoZSBzYW1lCisgICAg
ICAgICAgICAvLyBzdHJ1Y3R1cmUuIFRoZSB3aG9sZSBwb2ludCBvZiBhIHZhbHVlIGhhdmluZyBh
IHN0cnVjdHVyZSBpcyB0aGF0CisgICAgICAgICAgICAvLyBpdCBtYXkgY2hhbmdlIGluIHRoZSBm
dXR1cmUgLSBmb3IgZXhhbXBsZSBiZXR3ZWVuIHdoZW4gd2UgY29tcGlsZQorICAgICAgICAgICAg
Ly8gdGhlIGNvZGUgYW5kIHdoZW4gd2UgcnVuIGl0LgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUu
bWFrZVRvcCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFy
KCk7CiAgICAgICAgIAogICAgICAgICBtX3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVl
KTsKKyAgICAgICAgbV92YWx1ZSA9IHZhbHVlOwogICAgICAgICAKICAgICAgICAgY2hlY2tDb25z
aXN0ZW5jeSgpOwogICAgIH0KQEAgLTM3MCw2ICszOTUsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1
ZSB7CiAgICAgICAgIG1fc3RydWN0dXJlLmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAg
ICAgbV90eXBlID0gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAg
bV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICB9CkBAIC0zODEsMTcgKzQwNywyNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1f
dHlwZSA9IHR5cGU7CisgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFi
c3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9
PSBvdGhlci5tX3R5cGUgJiYgbV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAg
ICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlCisgICAgICAgICAgICAmJiBtX3N0cnVj
dHVyZSA9PSBvdGhlci5tX3N0cnVjdHVyZQorICAgICAgICAgICAgJiYgbV92YWx1ZSA9PSBvdGhl
ci5tX3ZhbHVlOwogICAgIH0KICAgICAKICAgICBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFs
dWUmIG90aGVyKQogICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtZXJnZVByZWRpY3Rpb24o
bV90eXBlLCBvdGhlci5tX3R5cGUpIHwgbV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0
dXJlKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0IHw9IG1l
cmdlUHJlZGljdGlvbihtX3R5cGUsIG90aGVyLm1fdHlwZSk7CisgICAgICAgIHJlc3VsdCB8PSBt
X3N0cnVjdHVyZS5hZGRBbGwob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgICAgICBpZiAobV92YWx1
ZSAhPSBvdGhlci5tX3ZhbHVlKQorICAgICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAg
ICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
QEAgLTQwMiw2ICs0MzUsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIAogICAg
ICAgICBpZiAodHlwZSAmIFByZWRpY3RDZWxsKQogICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFr
ZVRvcCgpOworICAgICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogCiAgICAgICAgIGNoZWNrQ29u
c2lzdGVuY3koKTsKICAgICB9CkBAIC00MTcsNiArNDUxLDEwIEBAIHN0cnVjdCBBYnN0cmFjdFZh
bHVlIHsKICAgICAgICAgLy8gc3VyZSB0aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20g
dGhlIFByZWRpY3RlZFR5cGUgbmVlZHMgdG8gYmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0
aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9tIHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1f
c3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1
ZSAmJiAhdmFsaWRhdGUobV92YWx1ZSkpCisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAK
ICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KICAgICAKQEAgLTQzMSw2ICs0Njks
MTAgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCB0
aGUgc3RydWN0dXJlIGZpbHRlcmluZyBkb2VzIHRoZSByaWdodCB0aGluZyBpcyB0byBmaWx0ZXIg
b24KICAgICAgICAgLy8gdGhlIG5ldyB0eXBlIChOb25lKSByYXRoZXIgdGhhbiB0aGUgb25lIHBh
c3NlZCAoQXJyYXkpLgogICAgICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKworICAg
ICAgICBpZiAoISFtX3ZhbHVlICYmICF2YWxpZGF0ZShtX3ZhbHVlKSkKKyAgICAgICAgICAgIGNs
ZWFyKCk7CisgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAg
IApAQCAtNDM5LDYgKzQ4MSw5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYg
KGlzVG9wKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCisgICAgICAgIGlm
ICghIW1fdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSB2YWx1ZTsKKyAgICAg
ICAgCiAgICAgICAgIGlmIChtZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21W
YWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCkBAIC00NTAsNyArNDk1LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBp
ZiAobV9zdHJ1Y3R1cmUuaXNUb3AoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgIGlmICghIXZhbHVlICYm
IHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgUHJlZGljdENl
bGwpOwogICAgICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgIH0KQEAgLTQ2Myw2ICs1MDgsMTIgQEAgc3RydWN0
IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAoIShtX3R5cGUgJiBQcmVkaWN0Q2VsbCkpCiAg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgCisgICAg
ICAgIGlmIChpc0NsZWFyKCkpCisgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIEFTU0VSVChtZXJnZVByZWRp
Y3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsK
KyAgICAgICAgCiAgICAgICAgIC8vIE5vdGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHByZWRp
Y3Rpb24gbGlrZSAoRmluYWwsIFtdKS4gVGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgICAgICAv
LyB0aGUgdmFsdWUgaXMgYm90dG9tIGFuZCB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGUgdmFs
dWUgaXMgdW5yZWFjaGFibGUuIEJ1dAogICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIGdldCBw
ZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0IHdvdWxkIG9ubHkgaW5jcmVhc2UgdGhlIGNvbXB1dGF0
aW9uYWwKQEAgLTQ3MywxMSArNTI0LDE0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7
CiAgICAgICAgIGZwcmludGYob3V0LCAiKCVzLCAiLCBwcmVkaWN0aW9uVG9TdHJpbmcobV90eXBl
KSk7CiAgICAgICAgIG1fc3RydWN0dXJlLmR1bXAob3V0KTsKKyAgICAgICAgaWYgKCEhbV92YWx1
ZSkKKyAgICAgICAgICAgIGZwcmludGYob3V0LCAiLCAlcyIsIG1fdmFsdWUuZGVzY3JpcHRpb24o
KSk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KIAogICAgIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7CiAgICAgUHJlZGljdGVkVHlwZSBtX3R5cGU7CisgICAg
SlNWYWx1ZSBtX3ZhbHVlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9u
IDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTAgKzExNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGNo
aWxkKDIpID0gY2hpbGQzOwogICAgIH0KICAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTm9kZUlu
ZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNoaWxkMiwgTm9kZUluZGV4IGNoaWxkMykKKyAgICB2b2lk
IGluaXRpYWxpemUoTm9kZUluZGV4IGNoaWxkMSA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMiA9
IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMyA9IE5vTm9kZSkKICAgICB7CiAgICAgICAgIGluaXRp
YWxpemUoRWRnZShjaGlsZDEpLCBFZGdlKGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CiAgICAgfQor
ICAgIAorICAgIHZvaWQgcmVzZXQoKQorICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
ICAgIG1fa2luZCA9IEZpeGVkOworI2VuZGlmCisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICB9
CiAKICAgICB1bnNpZ25lZCBmaXJzdENoaWxkKCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTEzOTQ0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4
PgogICAgICAgICAsIGlzT1NSVGFyZ2V0KGZhbHNlKQogICAgICAgICAsIGNmYUhhc1Zpc2l0ZWQo
ZmFsc2UpCiAgICAgICAgICwgY2ZhU2hvdWxkUmV2aXNpdChmYWxzZSkKKyAgICAgICAgLCBjZmFG
b3VuZENvbnN0YW50cyhmYWxzZSkKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgaXNM
aW5rZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTcwLDYgKzcxLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sg
OiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgIGJvb2wgaXNPU1JUYXJnZXQ7CiAgICAgYm9vbCBj
ZmFIYXNWaXNpdGVkOwogICAgIGJvb2wgY2ZhU2hvdWxkUmV2aXNpdDsKKyAgICBib29sIGNmYUZv
dW5kQ29uc3RhbnRzOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGlzTGlua2VkOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAko
cmV2aXNpb24gMTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsMjIgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCisgICAgTm9kZUluZGV4IGNvbnN0YW50Q1NF
KE5vZGUmIG5vZGUpCisgICAgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZv
clB1cmVDU0UoKTsgaS0tOykgeworICAgICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJy
ZW50QmxvY2stPmF0KGkpOworICAgICAgICAgICAgTm9kZSYgb3RoZXJOb2RlID0gbV9ncmFwaFtp
bmRleF07CisgICAgICAgICAgICBpZiAob3RoZXJOb2RlLm9wKCkgIT0gSlNDb25zdGFudCkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG90
aGVyTm9kZS5jb25zdGFudE51bWJlcigpICE9IG5vZGUuY29uc3RhbnROdW1iZXIoKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4OworICAgICAgICB9CisgICAgICAgIHJldHVybiBOb05vZGU7CisgICAgfQorICAgIAogICAg
IGJvb2wgaXNQcmVkaWN0ZWROdW1lcmljYWwoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwpA
QCAtNTk3LDYgKzYxMywxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQo
cHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBu
ZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCisg
ICAgICAgICAgICAvLyB3aGljaCBtYXkgcmVzdWx0IGluIGR1cGxpY2F0ZWQgY29uc3RhbnRzLiBX
ZSB1c2UgQ1NFIHRvIGNsZWFuIHRoaXMgdXAuCisgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChj
b25zdGFudENTRShub2RlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW1w
dXJlQ1NFKG5vZGUpKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisj
aW5jbHVkZSAiREZHQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIK
KyNpbmNsdWRlICJERkdHcmFwaC5oIgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2lu
Y2x1ZGUgIkRGR1BoYXNlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Y2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAg
IENvbnN0YW50Rm9sZGluZ1BoYXNlKEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFw
aCwgImNvbnN0YW50IGZvbGRpbmciKQorICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBydW4o
KQorICAgIHsKKyAgICAgICAgQWJzdHJhY3RTdGF0ZSBzdGF0ZShtX2dyYXBoKTsKKyAgICAgICAg
SW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4gaW5zZXJ0aW9uU2V0OworICAgICAgICAKKyAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5tX2Js
b2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAgaWYg
KCFibG9jay0+Y2ZhRm91bmRDb25zdGFudHMpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICBzdGF0ZS5iZWdpbkJhc2ljQmxvY2soYmxvY2spOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgp
OyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxpZCgp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzdGF0ZS5leGVj
dXRlKGluZGV4SW5CbG9jayk7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9
IGJsb2NrLT5hdChpbmRleEluQmxvY2spOworICAgICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBt
X2dyYXBoW25vZGVJbmRleF07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVy
YXRlKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGUuZmxhZ3MoKSAmIChOb2RlQ2xvYmJl
cnNXb3JsZCB8IE5vZGVNaWdodENsb2JiZXIpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHN0YXRlLmZvck5vZGUobm9kZUlu
ZGV4KS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIE5vZGUgcGhhbnRvbShQaGFudG9tLCBu
b2RlLmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgIHBoYW50b20uY2hpbGRyZW4gPSBub2Rl
LmNoaWxkcmVuOworICAgICAgICAgICAgICAgIHBoYW50b20ucmVmKCk7CisgICAgICAgICAgICAg
ICAgbV9ncmFwaC5jb252ZXJ0VG9Db25zdGFudChub2RlSW5kZXgsIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBOb2RlSW5kZXggcGhhbnRvbU5vZGVJbmRleCA9IG1fZ3JhcGguc2l6ZSgpOworICAg
ICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKHBoYW50b20pOworICAgICAgICAgICAgICAgIGlu
c2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHN0YXRlLnJlc2V0KCk7CisgICAgICAgICAgICBpbnNlcnRp
b25TZXQuZXhlY3V0ZSgqYmxvY2spOworICAgICAgICB9CisgICAgfQorfTsKKwordm9pZCBwZXJm
b3JtQ29uc3RhbnRGb2xkaW5nKEdyYXBoJiBncmFwaCkKK3sKKyAgICBydW5QaGFzZTxDb25zdGFu
dEZvbGRpbmdQaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2VfaAorI2Rl
ZmluZSBERkdDb25zdGFudEZvbGRpbmdQaGFzZV9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBDRkEtYmFzZWQgY29uc3RhbnQgZm9sZGluZy4gV2Fs
a3MgdGhvc2UgYmxvY2tzIG1hcmtlZCBieSB0aGUgQ0ZBIGFzIGhhdmluZworLy8gaW5mZXJyZWQg
Y29uc3RhbnRzLCBhbmQgcmVwbGFjZXMgdGhvc2Ugbm9kZXMgd2l0aCBjb25zdGFudHMgd2hpbHN0
IGluamVjdGluZworLy8gUGhhbnRvbSBub2RlcyB0byBrZWVwIHRoZSBjaGlsZHJlbiBhbGl2ZSAo
d2hpY2ggaXMgbmVjZXNzYXJ5IGZvciBPU1IgZXhpdCkuCisKK3ZvaWQgcGVyZm9ybUNvbnN0YW50
Rm9sZGluZyhHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkocmV2aXNpb24g
MTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHQnl0ZUNvZGVQYXJzZXIu
aCIKICNpbmNsdWRlICJERkdDRkFQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NTRVBoYXNlLmgiCisj
aW5jbHVkZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdGaXh1cFBo
YXNlLmgiCiAjaW5jbHVkZSAiREZHSklUQ29tcGlsZXIuaCIKICNpbmNsdWRlICJERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5oIgpAQCAtNjIsOSArNjMsMTAgQEAgaW5saW5lIGJvb2wgY29t
cGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAgIHBlcmZvcm1SZWR1bmRhbnRQaGlFbGltaW5h
dGlvbihkZmcpOwogICAgIHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24oZGZnKTsKICAgICBw
ZXJmb3JtRml4dXAoZGZnKTsKKyAgICBwZXJmb3JtQ0ZBKGRmZyk7CisgICAgcGVyZm9ybUNvbnN0
YW50Rm9sZGluZyhkZmcpOwogICAgIHBlcmZvcm1DU0UoZGZnKTsKICAgICBwZXJmb3JtVmlydHVh
bFJlZ2lzdGVyQWxsb2NhdGlvbihkZmcpOwotICAgIHBlcmZvcm1DRkEoZGZnKTsKIAogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBkYXRhTG9nKCJHcmFwaCBhZnRlciBvcHRpbWl6
YXRpb246XG4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlz
aW9uIDExMzk0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29y
a2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGRlcmVmKG5v
ZGUuY2hpbGQzKCkpOwogICAgICAgICBub2RlLmNoaWxkcmVuLmNoaWxkMygpID0gRWRnZSgpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KE5vZGVJbmRleCBub2RlSW5k
ZXgsIHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQorICAgIHsKKyAgICAgICAgYXQobm9kZUluZGV4
KS5jb252ZXJ0VG9Db25zdGFudChjb25zdGFudE51bWJlcik7CisgICAgfQorICAgIAorICAgIHZv
aWQgY29udmVydFRvQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCwgSlNWYWx1ZSB2YWx1ZSkK
KyAgICB7CisgICAgICAgIGNvbnZlcnRUb0NvbnN0YW50KG5vZGVJbmRleCwgbV9jb2RlQmxvY2st
PmFkZE9yRmluZENvbnN0YW50KHZhbHVlKSk7CisgICAgfQogCiAgICAgLy8gQ29kZUJsb2NrIGlz
IG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVt
cGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgogICAgIHZvaWQgZHVtcCgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCShyZXZpc2lvbiAxMTM5
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0luc2VydGlvblNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIEluc2VydGlv
bjxFbGVtZW50VHlwZT4mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbmRleEluSW5zZXJ0aW9u
c107CiAgICAgICAgICAgICBzaXplX3QgZmlyc3RJbmRleCA9IGluc2VydGlvbi5pbmRleCgpICsg
aW5kZXhJbkluc2VydGlvbnM7CiAgICAgICAgICAgICBzaXplX3QgaW5kZXhPZmZzZXQgPSBpbmRl
eEluSW5zZXJ0aW9ucyArIDE7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gbGFzdEluZGV4
OyBpLS0gPiBmaXJzdEluZGV4OykKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSBsYXN0SW5k
ZXg7IC0taSA+IGZpcnN0SW5kZXg7KQogICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25baV0gPSBj
b2xsZWN0aW9uW2kgLSBpbmRleE9mZnNldF07CiAgICAgICAgICAgICBjb2xsZWN0aW9uW2ZpcnN0
SW5kZXhdID0gaW5zZXJ0aW9uLmVsZW1lbnQoKTsKICAgICAgICAgICAgIGxhc3RJbmRleCA9IGZp
cnN0SW5kZXg7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24g
MTEzOTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE5Nyw2ICsxOTcsMTYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4g
bV9vcEluZm87CiAgICAgfQogICAgIAorICAgIHZvaWQgY29udmVydFRvQ29uc3RhbnQodW5zaWdu
ZWQgY29uc3RhbnROdW1iZXIpCisgICAgeworICAgICAgICBtX29wID0gSlNDb25zdGFudDsKKyAg
ICAgICAgaWYgKG1fZmxhZ3MgJiBOb2RlTXVzdEdlbmVyYXRlKQorICAgICAgICAgICAgbV9yZWZD
b3VudC0tOworICAgICAgICBtX2ZsYWdzICY9IH5Ob2RlTXVzdEdlbmVyYXRlOworICAgICAgICBt
X29wSW5mbyA9IGNvbnN0YW50TnVtYmVyOworICAgICAgICBjaGlsZHJlbi5yZXNldCgpOworICAg
IH0KKyAgICAKICAgICBKU0NlbGwqIHdlYWtDb25zdGFudCgpCiAgICAgewogICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fb3BJbmZvKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcy
LDcgKzE3Miw3IEBAIHZvaWQgSlNWYWx1ZTo6cHV0VG9QcmltaXRpdmUoRXhlY1N0YXRlKiAKICAg
ICByZXR1cm47CiB9CiAKLWNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKK2NoYXIqIEpTVmFs
dWU6OmRlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUg
PSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMTM5NDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
MCw3ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBj
b25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAK
LSAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKKyAgICAgICAgY2hhciogZGVzY3JpcHRpb24o
KSBjb25zdDsKIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogc3ludGhlc2l6
ZVByb3RvdHlwZShFeGVjU3RhdGUqKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137658</attachid>
            <date>2012-04-18 00:18:14 -0700</date>
            <delta_ts>2012-04-18 12:17:25 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>constprop_patch_5.diff</filename>
            <type>text/plain</type>
            <size>42630</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0NDgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEyLTA0LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIGNvbnN0YW50IHByb3BhZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDAwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlcyBBYnN0cmFjdFZhbHVl
IHRvIGJlIGFibGUgdG8gaG9sZCBhICJzZXQiIG9mIGNvbnN0YW50cywgd2hlcmUKKyAgICAgICAg
dGhlIG1heGltdW0gc2V0IHNpemUgaXMgMSAtIHNvIG1lcmdpbmcgYSB2YWx1ZSBjb250YWluaW5n
IGNvbnN0YW50IEEKKyAgICAgICAgd2l0aCBhbm90aGVyIHZhbHVlIGNvbnRhaW5pbmcgY29uc3Rh
bnQgQiB3aGVyZSBBICE9IEIgd2lsbCByZXN1bHQgaW4KKyAgICAgICAgdGhlIEFic3RyYWN0VmFs
dWUgY2xhaW1pbmcgdGhhdCBpdCBkb2VzIG5vdCBrbm93IGFueSBjb25zdGFudHMgKGkuZS4KKyAg
ICAgICAgaXQnbGwganVzdCBoYXZlIGEgcHJlZGljdGVkIHR5cGUgYW5kIHBvc3NpYmxlIGEgc3Ry
dWN0dXJlKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIGEgY29uc3RhbnQgZm9sZGluZyBwaGFz
ZSB0aGF0IHVzZXMgdGhpcyBuZXcgaW5mb3JtYXRpb24gdG8KKyAgICAgICAgcmVwbGFjZSBwdXJl
IG9wZXJhdGlvbnMga25vd24gdG8gaGF2ZSBjb25zdGFudCByZXN1bHRzIHdpdGgKKyAgICAgICAg
SlNDb25zdGFudHMuIFRoaXMgaXMgT1NSLWV4aXQtYXdhcmUsIGluIHRoYXQgaXQgd2lsbCBwcmVw
ZW5kIGEgUGhhbnRvbQorICAgICAgICB0aGF0IHJlZmVycyB0byBhbGwgb2YgdGhlIGtpZHMgb2Yg
dGhlIG5vZGUgd2UgcmVwbGFjZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0
ZTo6YmVnaW5CYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpl
bmRCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoQWJzdHJhY3RT
dGF0ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFZhbHVlOjpjbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RW
YWx1ZTo6aXNDbGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRv
cCk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclZhbHVlKToKKyAg
ICAgICAgKEFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OnZhbHVlSXNUb3ApOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0VmFsdWU6Om1lcmdlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0
ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpjaGVja0NvbnNpc3RlbmN5KToKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQWRqYWNl
bmN5TGlzdC5oOgorICAgICAgICAoSlNDOjpERkc6OkFkamFjZW5jeUxpc3Q6OmluaXRpYWxpemUp
OgorICAgICAgICAoQWRqYWNlbmN5TGlzdCk6CisgICAgICAgIChKU0M6OkRGRzo6QWRqYWNlbmN5
TGlzdDo6cmVzZXQpOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QmFzaWNCbG9jazo6QmFzaWNCbG9jayk6CisgICAgICAgIChCYXNpY0Jsb2NrKToK
KyAgICAgICAgKiBkZmcvREZHQ1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBo
YXNlOjpjb25zdGFudENTRSk6CisgICAgICAgIChDU0VQaGFzZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChDb25zdGFu
dEZvbGRpbmdQaGFzZSk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRp
bmdQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpwZXJmb3JtQ29uc3RhbnRGb2xkaW5n
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaDogQWRkZWQuCisgICAg
ICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoR3JhcGgp
OgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAg
ICogZGZnL0RGR0luc2VydGlvblNldC5oOgorICAgICAgICAoSlNDOjpERkc6Okluc2VydGlvblNl
dDo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgIChKU1ZhbHVlKToKKwogMjAx
Mi0wNC0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBz
aG91bGQgbm90IGF0dGVtcHQgdG8gZ2V0IHJhcmUgY2FzZSBjb3VudHMgZm9yIG9wX21vZCBvbiBB
Uk0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExNDQ4
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNjIsNiArNjIsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKICAgICBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAogICAgIGRm
Zy9ERkdDRkFQaGFzZS5jcHAKKyAgICBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCiAg
ICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcAogICAgIGRmZy9ERkdDU0VQaGFzZS5j
cHAKICAgICBkZmcvREZHRHJpdmVyLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDExNDQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb3JyZWN0YWJs
ZUp1bXBQb2ludC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29ycmVjdGFi
bGVKdW1wUG9pbnQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMTQ0ODApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIFwKICAgICBkZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcCBcCiAgICAgZGZnL0RGR0NGQVBoYXNlLmNwcCBcCisgICAgZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNw
cCBcCiAgICAgZGZnL0RGR0NTRVBoYXNlLmNwcCBcCiAgICAgZGZnL0RGR0RyaXZlci5jcHAgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDExNDQ4MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBACiAJCTBGMkJEQzJDMTUxRkRFOTEw
MENEODkxMCAvKiBPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQkRDMkIxNTFGREU4QjAwQ0Q4OTEwIC8qIE9wZXJhbmRzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDcz
OEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OworCQkwRjNCM0ExQTE1M0U2OEYyMDAz
RUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLzsgfTsKKwkJMEYzQjNBMUIxNTNFNjhGNDAwM0VE
MEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjQyNkE0ODE0NjBDQkIzMDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDUx
NDYwQ0JBQjAwMTMxRjhGIC8qIFZhbHVlUmVjb3ZlcnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyog
VmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIx
NDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9y
bWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTc2MSw2ICs3NjMsOCBAQAogCQkwRjJCREMyQjE1MUZERThCMDBDRDg5MTAgLyogT3BlcmFuZHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3BlcmFuZHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJs
b2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYzQjNB
MTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDsgcGF0aCA9IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGM0IzQTE4MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTQ1MTQ2MENCQUIwMDEzMUY4RiAvKiBW
YWx1ZVJlY292ZXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUmVj
b3ZlcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MjZBNDYxNDYwQ0JBQjAw
MTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjA0Myw2ICsyMDQ3LDggQEAKIAkJCQkwRkQ4MkUxRTE0MTcyQzJGMDAxNzlDOTQgLyogREZH
Q2FwYWJpbGl0aWVzLmNwcCAqLywKIAkJCQkwRkQ4MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZH
Q2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJMEZDMDk3N0UxNDY5RUJDNDAwQ0YyNDQyIC8qIERGR0Nv
bW1vbi5oICovLAorCQkJCTBGM0IzQTE3MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAgKi8sCisJCQkJMEYzQjNBMTgxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmggKi8sCiAJCQkJMEZDMDk3OUQxNDZCMjcxRTAwQ0YyNDQyIC8q
IERGR0NvcnJlY3RhYmxlSnVtcFBvaW50LmNwcCAqLywKIAkJCQkwRkMwOTc5QTE0NkE3NzIwMDBD
RjI0NDIgLyogREZHQ29ycmVjdGFibGVKdW1wUG9pbnQuaCAqLywKIAkJCQkwRjFFM0E0NDE1MzRD
QkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAqLywKQEAgLTI1NzAsNiArMjU3
Niw3IEBACiAJCQkJODYxMkU0Q0QxNTIzODlFQzAwQzgzNkJFIC8qIE1hdGNoUmVzdWx0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjFFM0E0NjE1MzRDQkFGMDAwRjk0NTYgLyogREZHQXJndW1lbnRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8q
IERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjNCM0ExQjE1M0U2
OEY0MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMzEzMyw2ICszMTQwLDcgQEAKIAkJCQk4NjQyQzUxMDE1MUMwNkE5MDA0NkQ0RUYgLyogUmVn
RXhwQ2FjaGVkUmVzdWx0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NDJDNTEyMTUxQzA4M0Qw
MDQ2RDRFRiAvKiBSZWdFeHBNYXRjaGVzQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYz
QzZEOUMxNTIxMTExQTAwNTg1RTRFIC8qIFlhcnJDYW5vbmljYWxpemVVQ1MyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGM0IzQTFBMTUzRTY4RjIwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTE0NDgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNiArOTEsNyBAQCB2b2lkIEFic3RyYWN0U3RhdGU6OmJlZ2luQmFzaWNCbG9jayhCYXNp
CiAgICAgYmFzaWNCbG9jay0+Y2ZhSGFzVmlzaXRlZCA9IHRydWU7CiAgICAgbV9ibG9jayA9IGJh
c2ljQmxvY2s7CiAgICAgbV9pc1ZhbGlkID0gdHJ1ZTsKKyAgICBtX2ZvdW5kQ29uc3RhbnRzID0g
ZmFsc2U7CiB9CiAKIHZvaWQgQWJzdHJhY3RTdGF0ZTo6aW5pdGlhbGl6ZShHcmFwaCYgZ3JhcGgp
CkBAIC0xNTcsNiArMTU4LDggQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjplbmRCYXNpY0Jsb2NrKE1l
cmdlTQogICAgIAogICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9jazsgLy8gU2F2ZSB0aGUg
YmxvY2sgZm9yIHN1Y2Nlc3NvciBtZXJnaW5nLgogICAgIAorICAgIGJsb2NrLT5jZmFGb3VuZENv
bnN0YW50cyA9IG1fZm91bmRDb25zdGFudHM7CisgICAgCiAgICAgaWYgKCFtX2lzVmFsaWQpIHsK
ICAgICAgICAgcmVzZXQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjI1LDEzICsyMjgs
NyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgc3dpdGNo
IChub2RlLm9wKCkpIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgY2FzZSBXZWFrSlNDb25z
dGFudDogewotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC52YWx1ZU9mSlNDb25zdGFu
dChub2RlSW5kZXgpOwotICAgICAgICAvLyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSEgSXQncyB0
ZW1wdGluZyB0byBjYWxsIHNldCh2YWx1ZSksIGJ1dAotICAgICAgICAvLyB0aGF0IHdvdWxkIGJl
IHdyb25nLCBzaW5jZSB0aGF0IHdvdWxkIGNvbnN0aXR1dGUgYSBwcm9vZiB0aGF0IHRoaXMKLSAg
ICAgICAgLy8gdmFsdWUgd2lsbCBhbHdheXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUuIFRoZSB3
aG9sZSBwb2ludCBvZiBhIHZhbHVlCi0gICAgICAgIC8vIGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0
aGF0IGl0IG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSAtIGZvciBleGFtcGxlCi0gICAgICAgIC8v
IGJldHdlZW4gd2hlbiB3ZSBjb21waWxlIHRoZSBjb2RlIGFuZCB3aGVuIHdlIHJ1biBpdC4KLSAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKSk7
CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQobV9ncmFwaC52YWx1ZU9mSlNDb25zdGFu
dChub2RlSW5kZXgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC0y
NzcsMjAgKzI3NCw2OCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgY2FzZSBCaXRYb3I6CiAgICAgY2FzZSBCaXRSU2hpZnQ6CiAgICAgY2FzZSBCaXRMU2hp
ZnQ6Ci0gICAgY2FzZSBCaXRVUlNoaWZ0OgorICAgIGNhc2UgQml0VVJTaGlmdDogeworICAgICAg
ICBKU1ZhbHVlIGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYmIHJpZ2h0LmlzSW50MzIoKSkg
eworICAgICAgICAgICAgaW50MzJfdCBhID0gbGVmdC5hc0ludDMyKCk7CisgICAgICAgICAgICBp
bnQzMl90IGIgPSByaWdodC5hc0ludDMyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3Ao
KSkgeworICAgICAgICAgICAgY2FzZSBCaXRBbmQ6CisgICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgJiBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEJpdE9yOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoSlNWYWx1ZShhIHwgYikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBCaXRYb3I6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChK
U1ZhbHVlKGEgXiBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEJpdFJTaGlmdDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFs
dWUoYSA+PiBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQml0TFNoaWZ0OgorICAgICAgICAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihiKSkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCaXRVUlNoaWZ0OgorICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShzdGF0aWNfY2FzdDx1
aW50MzJfdD4oYSkgPj4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGIpKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50
cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAg
Ci0gICAgY2FzZSBVSW50MzJUb051bWJlcjoKKyAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7Cisg
ICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7Cisg
ICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBBU1NF
UlQoY2hpbGQuaXNJbnQzMigpKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
SlNWYWx1ZShjaGlsZC5hc1VJbnQzMigpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRz
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGlmICghbm9k
ZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3REb3VibGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAg
ICAgICAgIAotICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgVmFsdWVUb0ludDMyOiB7
CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBp
ZiAoY2hpbGQuaXNJbnQzMigpKQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoY2hpbGQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoSlNWYWx1ZShKU0M6OnRvSW50MzIoY2hpbGQuYXNEb3VibGUoKSkpKTsKKyAg
ICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpKQogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEludDMyKTsKICAgICAgICAgZWxzZSBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5z
aG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKQEAgLTMwMCwxNCArMzQ1LDI5IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgCiAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAKLSAgICBjYXNlIEludDMyVG9Eb3VibGU6CisgICAgY2FzZSBJbnQzMlRvRG91YmxlOiB7
CisgICAgICAgIEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7
CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGNo
aWxkLmFzTnVtYmVyKCkpKTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdERvdWJsZSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgICAgIAog
ICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDogeworICAgICAgICBKU1ZhbHVl
IGxlZnQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUg
cmlnaHQgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNOdW1iZXIoKSAmJiByaWdodC5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUobGVmdC5hc051bWJlcigpICsg
cmlnaHQuYXNOdW1iZXIoKSkpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaC5hZGRT
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKQEAgLTMzMSw2ICszOTEsMTMgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgIH0KICAgICAgICAgICAg
IAogICAgIGNhc2UgQXJpdGhTdWI6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShu
b2RlLmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0
LmlzTnVtYmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChKU1ZhbHVlKGxlZnQuYXNOdW1iZXIoKSAtIHJpZ2h0LmFzTnVtYmVyKCkp
KTsKKyAgICAgICAgICAgIG1fZm91bmRDb25zdGFudHMgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50
ZWdlcihub2RlKSkgewogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVy
KFByZWRpY3RJbnQzMik7CkBAIC0zNDQsNiArNDExLDEyIEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6
ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJpdGhOZWdh
dGU6IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFs
dWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZSgtY2hpbGQuYXNOdW1iZXIoKSkpOwor
ICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaC5uZWdhdGVTaG91bGRTcGVjdWxhdGVJbnRl
Z2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOwpAQCAtMzU5LDYgKzQzMiwzNCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgY2FzZSBBcml0aE1pbjoKICAgICBjYXNlIEFyaXRoTWF4OgogICAg
IGNhc2UgQXJpdGhNb2Q6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLmNo
aWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gZm9yTm9kZShub2RlLmNo
aWxkMigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzTnVt
YmVyKCkgJiYgcmlnaHQuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgZG91YmxlIGEgPSBsZWZ0
LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHJpZ2h0LmFzTnVtYmVyKCk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2FzZSBBcml0aE11
bDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpTVmFsdWUoYSAqIGIp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhEaXY6Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGEgLyBiKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEFyaXRoTWluOgorICAgICAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoSlNWYWx1ZShhIDwgYiA/IGEgOiAoYiA8
PSBhID8gYiA6IGEgKyBiKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBBcml0aE1heDoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KEpT
VmFsdWUoYSA+IGIgPyBhIDogKGIgPj0gYSA/IGIgOiBhICsgYikpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXJpdGhNb2Q6CisgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChKU1ZhbHVlKGZtb2QoYSwgYikpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgICAgIGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pICYmIG5vZGUuY2FuU3BlY3Vs
YXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihQcmVkaWN0SW50MzIpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0
ZXIoUHJlZGljdEludDMyKTsKQEAgLTM3MSw3ICs0NzIsMTMgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAg
ICAKLSAgICBjYXNlIEFyaXRoQWJzOgorICAgIGNhc2UgQXJpdGhBYnM6IHsKKyAgICAgICAgSlNW
YWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYg
KGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoSlNWYWx1ZShmYWJzKGNoaWxkLmFzTnVtYmVyKCkpKSk7CisgICAgICAgICAgICBt
X2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIo
KSAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKQEAgLTM4MCwxMyArNDg3LDM0IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAg
ICAgIAotICAgIGNhc2UgQXJpdGhTcXJ0OgorICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAg
IEpTVmFsdWUgY2hpbGQgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KEpTVmFsdWUoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAg
ICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsK
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKICAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAgICAgCiAgICAgY2FzZSBMb2dpY2FsTm90OiB7CisgICAg
ICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsK
KyAgICAgICAgaWYgKGNoaWxkQ29uc3QpIHsKKyAgICAgICAgICAgIGlmIChjaGlsZENvbnN0Lmlz
TnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9v
bGVhbighY2hpbGRDb25zdC5hc051bWJlcigpKSk7CisgICAgICAgICAgICAgICAgbV9mb3VuZENv
bnN0YW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAoY2hpbGRDb25zdC5pc0Jvb2xlYW4oKSkgeworICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKCFjaGlsZENvbnN0LmFzQm9vbGVhbigp
KSk7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgTm9kZSYgY2hp
bGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwogICAgICAgICBpZiAoaXNCb29sZWFuUHJlZGlj
dGlvbihjaGlsZC5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdEJvb2xlYW4pOwpAQCAtNDEwLDYgKzUzOCwzMyBAQCBib29sIEFi
c3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgY2FzZSBJc1N0cmluZzoKICAg
ICBjYXNlIElzT2JqZWN0OgogICAgIGNhc2UgSXNGdW5jdGlvbjogeworICAgICAgICBKU1ZhbHVl
IGNoaWxkID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBpZiAoY2hp
bGQpIHsKKyAgICAgICAgICAgIGJvb2wgZm91bmRDb25zdGFudCA9IHRydWU7CisgICAgICAgICAg
ICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAgY2FzZSBJc1VuZGVmaW5lZDoKKyAg
ICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbigKKyAgICAgICAg
ICAgICAgICAgICAgY2hpbGQuaXNDZWxsKCkKKyAgICAgICAgICAgICAgICAgICAgPyBjaGlsZC5h
c0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgp
CisgICAgICAgICAgICAgICAgICAgIDogY2hpbGQuaXNVbmRlZmluZWQoKSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc0Jvb2xlYW46CisgICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oY2hpbGQuaXNCb29sZWFuKCkpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSXNOdW1iZXI6CisgICAg
ICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jvb2xlYW4oY2hpbGQuaXNOdW1i
ZXIoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBJc1N0cmlu
ZzoKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KGpzQm9vbGVhbihpc0pT
U3RyaW5nKGNoaWxkKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChmb3VuZENvbnN0YW50KSB7CisgICAgICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9
IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0Qm9vbGVhbik7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTQxOSw2ICs1NzQsMzUgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlKHVuc2lnbmVkIGluZAogICAgIGNhc2UgQ29tcGFyZUdyZWF0ZXI6CiAgICAgY2FzZSBD
b21wYXJlR3JlYXRlckVxOgogICAgIGNhc2UgQ29tcGFyZUVxOiB7CisgICAgICAgIEpTVmFsdWUg
bGVmdENvbnN0ID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKS52YWx1ZSgpOworICAgICAgICBKU1Zh
bHVlIHJpZ2h0Q29uc3QgPSBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLnZhbHVlKCk7CisgICAgICAg
IGlmIChsZWZ0Q29uc3QgJiYgcmlnaHRDb25zdCAmJiBsZWZ0Q29uc3QuaXNOdW1iZXIoKSAmJiBy
aWdodENvbnN0LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGRvdWJsZSBhID0gbGVmdENvbnN0
LmFzTnVtYmVyKCk7CisgICAgICAgICAgICBkb3VibGUgYiA9IHJpZ2h0Q29uc3QuYXNOdW1iZXIo
KTsKKyAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIENv
bXBhcmVMZXNzOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29s
ZWFuKGEgPCBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENv
bXBhcmVMZXNzRXE6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc0Jv
b2xlYW4oYSA8PSBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IENvbXBhcmVHcmVhdGVyOgorICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
anNCb29sZWFuKGEgPiBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIENvbXBhcmVHcmVhdGVyRXE6CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChqc0Jvb2xlYW4oYSA+PSBiKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENvbXBhcmVFcToKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KGpzQm9vbGVhbihhID09IGIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2ZvdW5kQ29u
c3RhbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RCb29sZWFuKTsKICAgICAgICAg
CiAgICAgICAgIE5vZGUmIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwpAQCAtNDcwLDkg
KzY1NCwxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIAotICAgIGNhc2UgQ29tcGFyZVN0cmljdEVx
OgorICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOiB7CisgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSByaWdodCA9IGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQg
JiYgbGVmdC5pc051bWJlcigpICYmIHJpZ2h0LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoanNCb29sZWFuKGxlZnQuYXNOdW1iZXIoKSA9PSByaWdodC5h
c051bWJlcigpKSk7CisgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdEJvb2xlYW4pOwogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgU3RyaW5nQ2hhckNvZGVBdDoKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoUHJlZGljdFN0cmluZyk7CkBAIC03MjEsNiArOTEzLDEzIEBAIGJvb2wgQWJzdHJhY3RTdGF0
ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFRvUHJpbWl0aXZlOiB7CisgICAgICAgIEpTVmFsdWUgY2hpbGRDb25zdCA9IGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkQ29uc3QgJiYgY2hp
bGRDb25zdC5pc051bWJlcigpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KGNoaWxkQ29uc3QpOworICAgICAgICAgICAgbV9mb3VuZENvbnN0YW50cyA9IHRydWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgTm9kZSYgY2hpbGQg
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwogICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRl
cihQcmVkaWN0SW50MzIpOwpAQCAtMTIxMyw3ICsxNDEyLDYgQEAgaW5saW5lIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6bWVyZ2VWYXJpYWJsZQogICAgIHJldHVybiBkZXN0aW5hdGlvbi5tZXJnZShzb3Vy
Y2UpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogdm9pZCBBYnN0cmFjdFN0YXRlOjpkdW1wKEZJTEUq
IG91dCkKIHsKICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKQEAgLTEyMzAsNyArMTQyOCw2IEBAIHZv
aWQgQWJzdHJhY3RTdGF0ZTo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgIHZhbHVlLmR1bXAob3V0
KTsKICAgICB9CiB9Ci0jZW5kaWYKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNp
b24gMTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw5ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgLy8gTWVy
Z2VUb1N1Y2Nlc3NvcnMuCiAgICAgYm9vbCBtZXJnZVRvU3VjY2Vzc29ycyhHcmFwaCYsIEJhc2lj
QmxvY2sqKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KTsKLSNl
bmRpZgogICAgIAogcHJpdmF0ZToKICAgICB2b2lkIGNsb2JiZXJTdHJ1Y3R1cmVzKHVuc2lnbmVk
KTsKQEAgLTE4OSw2ICsxODcsNyBAQCBwcml2YXRlOgogICAgIE9wZXJhbmRzPEFic3RyYWN0VmFs
dWU+IG1fdmFyaWFibGVzOwogICAgIEJhc2ljQmxvY2sqIG1fYmxvY2s7CiAgICAgYm9vbCBtX2hh
dmVTdHJ1Y3R1cmVzOworICAgIGJvb2wgbV9mb3VuZENvbnN0YW50czsKICAgICAKICAgICBib29s
IG1faXNWYWxpZDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNywxMCArMzE3LDEx
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7CiAgICAgICAgIG1fdHlwZSA9IFByZWRp
Y3ROb25lOwogICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOworICAgICAgICBtX3ZhbHVlID0g
SlNWYWx1ZSgpOwogICAgICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAg
IGJvb2wgaXNDbGVhcigpCisgICAgYm9vbCBpc0NsZWFyKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX3R5cGUgPT0gUHJlZGljdE5vbmUgJiYgbV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwog
ICAgIH0KQEAgLTMyOSw2ICszMzAsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgewog
ICAgICAgICBtX3R5cGUgPSBQcmVkaWN0VG9wOwogICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9w
KCk7CisgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICB9CiAgICAgCkBAIC0zNDEsMTEgKzM0MywyNiBAQCBzdHJ1Y3QgQWJzdHJhY3RW
YWx1ZSB7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCisgICAgdm9p
ZCBjbG9iYmVyVmFsdWUoKQorICAgIHsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKKyAg
ICB9CisgICAgCiAgICAgYm9vbCBpc1RvcCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
bV90eXBlID09IFByZWRpY3RUb3AgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKTsKICAgICB9CiAgICAg
CisgICAgYm9vbCB2YWx1ZUlzVG9wKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhbV92
YWx1ZSAmJiBtX3R5cGU7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUgdmFsdWUoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWU7CisgICAgfQorICAgIAogICAgIHN0YXRpYyBB
YnN0cmFjdFZhbHVlIHRvcCgpCiAgICAgewogICAgICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsK
QEAgLTM1NSwxMSArMzcyLDE5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2
b2lkIHNldChKU1ZhbHVlIHZhbHVlKQogICAgIHsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIo
KTsKLSAgICAgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUu
YWRkKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIGlmICghIXZhbHVlICYm
IHZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAvLyBIYXZlIHRvIGJlIGNhcmVmdWwgaGVy
ZSEgSXQncyB0ZW1wdGluZyB0byBzZXQgdGhlIHN0cnVjdHVyZSB0byB0aGUKKyAgICAgICAgICAg
IC8vIHZhbHVlJ3Mgc3RydWN0dXJlLCBidXQgdGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2UgdGhh
dCB3b3VsZAorICAgICAgICAgICAgLy8gY29uc3RpdHV0ZSBhIHByb29mIHRoYXQgdGhpcyB2YWx1
ZSB3aWxsIGFsd2F5cyBoYXZlIHRoZSBzYW1lCisgICAgICAgICAgICAvLyBzdHJ1Y3R1cmUuIFRo
ZSB3aG9sZSBwb2ludCBvZiBhIHZhbHVlIGhhdmluZyBhIHN0cnVjdHVyZSBpcyB0aGF0CisgICAg
ICAgICAgICAvLyBpdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgLSBmb3IgZXhhbXBsZSBiZXR3
ZWVuIHdoZW4gd2UgY29tcGlsZQorICAgICAgICAgICAgLy8gdGhlIGNvZGUgYW5kIHdoZW4gd2Ug
cnVuIGl0LgorICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBt
X3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKyAgICAgICAgbV92YWx1ZSA9IHZh
bHVlOwogICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIH0KQEAgLTM3
MCw2ICszOTUsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIG1fc3RydWN0dXJl
LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAKICAgICAgICAgbV90eXBlID0gcHJlZGljdGlvbkZy
b21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAg
ICAgICAgCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC0zODEsMTcgKzQw
NywyNCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fdHlwZSA9IHR5cGU7CisgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25z
dAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9zdHJ1
Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3Ro
ZXIubV90eXBlCisgICAgICAgICAgICAmJiBtX3N0cnVjdHVyZSA9PSBvdGhlci5tX3N0cnVjdHVy
ZQorICAgICAgICAgICAgJiYgbV92YWx1ZSA9PSBvdGhlci5tX3ZhbHVlOwogICAgIH0KICAgICAK
ICAgICBib29sIG1lcmdlKGNvbnN0IEFic3RyYWN0VmFsdWUmIG90aGVyKQogICAgIHsKLSAgICAg
ICAgYm9vbCByZXN1bHQgPSBtZXJnZVByZWRpY3Rpb24obV90eXBlLCBvdGhlci5tX3R5cGUpIHwg
bV9zdHJ1Y3R1cmUuYWRkQWxsKG90aGVyLm1fc3RydWN0dXJlKTsKKyAgICAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKKyAgICAgICAgcmVzdWx0IHw9IG1lcmdlUHJlZGljdGlvbihtX3R5cGUsIG90
aGVyLm1fdHlwZSk7CisgICAgICAgIHJlc3VsdCB8PSBtX3N0cnVjdHVyZS5hZGRBbGwob3RoZXIu
bV9zdHJ1Y3R1cmUpOworICAgICAgICBpZiAobV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlKQorICAg
ICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTQwMiw2ICs0MzUsNyBAQCBzdHJ1
Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIAogICAgICAgICBpZiAodHlwZSAmIFByZWRpY3RD
ZWxsKQogICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOworICAgICAgICBtX3ZhbHVl
ID0gSlNWYWx1ZSgpOwogCiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CkBAIC00
MTcsNiArNDUxLDEwIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8gc3VyZSB0
aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFByZWRpY3RlZFR5cGUgbmVlZHMg
dG8gYmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBm
cm9tIHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUp
OworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1ZSAmJiAhdmFsaWRhdGUobV92YWx1ZSkp
CisgICAgICAgICAgICBjbGVhcigpOworICAgICAgICAKICAgICAgICAgY2hlY2tDb25zaXN0ZW5j
eSgpOwogICAgIH0KICAgICAKQEAgLTQzMSw2ICs0NjksMTAgQEAgc3RydWN0IEFic3RyYWN0VmFs
dWUgewogICAgICAgICAvLyB0byBlbnN1cmUgdGhhdCB0aGUgc3RydWN0dXJlIGZpbHRlcmluZyBk
b2VzIHRoZSByaWdodCB0aGluZyBpcyB0byBmaWx0ZXIgb24KICAgICAgICAgLy8gdGhlIG5ldyB0
eXBlIChOb25lKSByYXRoZXIgdGhhbiB0aGUgb25lIHBhc3NlZCAoQXJyYXkpLgogICAgICAgICBt
X3N0cnVjdHVyZS5maWx0ZXIobV90eXBlKTsKKworICAgICAgICBpZiAoISFtX3ZhbHVlICYmICF2
YWxpZGF0ZShtX3ZhbHVlKSkKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIAogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIApAQCAtNDM5LDYgKzQ4MSw5IEBAIHN0
cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgCisgICAgICAgIGlmICghIW1fdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gbV92YWx1ZSA9PSB2YWx1ZTsKKyAgICAgICAgCiAgICAgICAgIGlmIChtZXJnZVBy
ZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCkBAIC00NTAsNyArNDk1LDcgQEAg
c3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICBpZiAobV9zdHJ1Y3R1cmUuaXNUb3AoKSkK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKSB7CisgICAgICAgIGlmICghIXZhbHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobV90eXBlICYgUHJlZGljdENlbGwpOwogICAgICAgICAgICAgcmV0dXJu
IG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgIH0KQEAgLTQ2Myw2ICs1MDgsMTIgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAg
ICBpZiAoIShtX3R5cGUgJiBQcmVkaWN0Q2VsbCkpCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgCisgICAgICAgIGlmIChpc0NsZWFyKCkpCisgICAg
ICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOworICAgICAgICAKKyAgICAgICAgaWYgKCEhbV92YWx1
ZSkKKyAgICAgICAgICAgIEFTU0VSVChtZXJnZVByZWRpY3Rpb25zKG1fdHlwZSwgcHJlZGljdGlv
bkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICAgICAgCiAgICAgICAgIC8vIE5v
dGUgdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBhIHByZWRpY3Rpb24gbGlrZSAoRmluYWwsIFtdKS4g
VGhpcyByZWFsbHkgbWVhbnMgdGhhdAogICAgICAgICAvLyB0aGUgdmFsdWUgaXMgYm90dG9tIGFu
ZCB0aGF0IGFueSBjb2RlIHRoYXQgdXNlcyB0aGUgdmFsdWUgaXMgdW5yZWFjaGFibGUuIEJ1dAog
ICAgICAgICAvLyB3ZSBkb24ndCB3YW50IHRvIGdldCBwZWRhbnRpYyBhYm91dCB0aGlzIGFzIGl0
IHdvdWxkIG9ubHkgaW5jcmVhc2UgdGhlIGNvbXB1dGF0aW9uYWwKQEAgLTQ3MywxMSArNTI0LDE0
IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICB7CiAgICAgICAgIGZwcmludGYob3V0LCAi
KCVzLCAiLCBwcmVkaWN0aW9uVG9TdHJpbmcobV90eXBlKSk7CiAgICAgICAgIG1fc3RydWN0dXJl
LmR1bXAob3V0KTsKKyAgICAgICAgaWYgKCEhbV92YWx1ZSkKKyAgICAgICAgICAgIGZwcmludGYo
b3V0LCAiLCAlcyIsIG1fdmFsdWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgIGZwcmludGYob3V0
LCAiKSIpOwogICAgIH0KIAogICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgbV9zdHJ1Y3R1cmU7
CiAgICAgUHJlZGljdGVkVHlwZSBtX3R5cGU7CisgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIAog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBZGphY2VuY3lMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBZGphY2VuY3lMaXN0LmgJKHJldmlzaW9uIDExNDQ4MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQs
MTAgKzExNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgIGNoaWxkKDIpID0gY2hpbGQzOwogICAgIH0K
ICAgICAKLSAgICB2b2lkIGluaXRpYWxpemUoTm9kZUluZGV4IGNoaWxkMSwgTm9kZUluZGV4IGNo
aWxkMiwgTm9kZUluZGV4IGNoaWxkMykKKyAgICB2b2lkIGluaXRpYWxpemUoTm9kZUluZGV4IGNo
aWxkMSA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxkMiA9IE5vTm9kZSwgTm9kZUluZGV4IGNoaWxk
MyA9IE5vTm9kZSkKICAgICB7CiAgICAgICAgIGluaXRpYWxpemUoRWRnZShjaGlsZDEpLCBFZGdl
KGNoaWxkMiksIEVkZ2UoY2hpbGQzKSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgcmVzZXQoKQor
ICAgIHsKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgICAgIG1fa2luZCA9IEZpeGVkOworI2Vu
ZGlmCisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICB9CiAKICAgICB1bnNpZ25lZCBmaXJzdENo
aWxkKCkgY29uc3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
c2ljQmxvY2suaAkocmV2aXNpb24gMTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0
IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4PgogICAgICAgICAsIGlzT1NSVGFyZ2V0
KGZhbHNlKQogICAgICAgICAsIGNmYUhhc1Zpc2l0ZWQoZmFsc2UpCiAgICAgICAgICwgY2ZhU2hv
dWxkUmV2aXNpdChmYWxzZSkKKyAgICAgICAgLCBjZmFGb3VuZENvbnN0YW50cyhmYWxzZSkKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICwgaXNMaW5rZWQoZmFsc2UpCiAjZW5kaWYKQEAg
LTcwLDYgKzcxLDcgQEAgc3RydWN0IEJhc2ljQmxvY2sgOiBWZWN0b3I8Tm9kZUluZGV4LCA4Pgog
ICAgIGJvb2wgaXNPU1JUYXJnZXQ7CiAgICAgYm9vbCBjZmFIYXNWaXNpdGVkOwogICAgIGJvb2wg
Y2ZhU2hvdWxkUmV2aXNpdDsKKyAgICBib29sIGNmYUZvdW5kQ29uc3RhbnRzOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICBib29sIGlzTGlua2VkOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTE0NDgwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw2ICsxMjMsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9
CiAgICAgCisgICAgTm9kZUluZGV4IGNvbnN0YW50Q1NFKE5vZGUmIG5vZGUpCisgICAgeworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBlbmRJbmRleEZvclB1cmVDU0UoKTsgaS0tOykgeworICAg
ICAgICAgICAgTm9kZUluZGV4IGluZGV4ID0gbV9jdXJyZW50QmxvY2stPmF0KGkpOworICAgICAg
ICAgICAgTm9kZSYgb3RoZXJOb2RlID0gbV9ncmFwaFtpbmRleF07CisgICAgICAgICAgICBpZiAo
b3RoZXJOb2RlLm9wKCkgIT0gSlNDb25zdGFudCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG90aGVyTm9kZS5jb25zdGFudE51bWJlcigp
ICE9IG5vZGUuY29uc3RhbnROdW1iZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBOb05vZGU7CisgICAgfQorICAgIAogICAgIGJvb2wgaXNQcmVkaWN0ZWROdW1lcmlj
YWwoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwpAQCAtNTk3LDYgKzYxMywxMiBAQCBwcml2
YXRlOgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAorICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAg
ICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBuZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdp
bGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCisgICAgICAgICAgICAvLyB3aGljaCBtYXkg
cmVzdWx0IGluIGR1cGxpY2F0ZWQgY29uc3RhbnRzLiBXZSB1c2UgQ1NFIHRvIGNsZWFuIHRoaXMg
dXAuCisgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChjb25zdGFudENTRShub2RlKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3Ro
OgogICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoaW1wdXJlQ1NFKG5vZGUpKTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQWJzdHJhY3RTdGF0
ZS5oIgorI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJERkdHcmFwaC5oIgor
I2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhh
c2UgOiBwdWJsaWMgUGhhc2UgeworcHVibGljOgorICAgIENvbnN0YW50Rm9sZGluZ1BoYXNlKEdy
YXBoJiBncmFwaCkKKyAgICAgICAgOiBQaGFzZShncmFwaCwgImNvbnN0YW50IGZvbGRpbmciKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgQWJzdHJh
Y3RTdGF0ZSBzdGF0ZShtX2dyYXBoKTsKKyAgICAgICAgSW5zZXJ0aW9uU2V0PE5vZGVJbmRleD4g
aW5zZXJ0aW9uU2V0OworICAgICAgICAKKyAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRl
eCkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Js
b2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAgaWYgKCFibG9jay0+Y2ZhRm91bmRDb25zdGFu
dHMpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBzdGF0ZS5iZWdpbkJh
c2ljQmxvY2soYmxvY2spOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sg
PSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAg
ICAgICAgICAgICAgIGlmICghc3RhdGUuaXNWYWxpZCgpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBzdGF0ZS5leGVjdXRlKGluZGV4SW5CbG9jayk7CisgICAg
ICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLT5hdChpbmRleEluQmxvY2sp
OworICAgICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJbmRleF07CisgICAg
ICAgICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkKKyAgICAgICAgICAgICAgICAg
ICAgfHwgKG5vZGUuZmxhZ3MoKSAmIChOb2RlQ2xvYmJlcnNXb3JsZCB8IE5vZGVNaWdodENsb2Ji
ZXIpKQorICAgICAgICAgICAgICAgICAgICB8fCBub2RlLmhhc0NvbnN0YW50KCkpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBz
dGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZh
bHVlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBOb2Rl
IHBoYW50b20oUGhhbnRvbSwgbm9kZS5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICBwaGFu
dG9tLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICBwaGFudG9tLnJl
ZigpOworICAgICAgICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZUluZGV4
LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IHBoYW50b21Ob2RlSW5kZXggPSBt
X2dyYXBoLnNpemUoKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChwaGFudG9tKTsK
KyAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5kKGluZGV4SW5CbG9jaywgcGhhbnRv
bU5vZGVJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZS5yZXNldCgpOwor
ICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKmJsb2NrKTsKKyAgICAgICAgfQorICAg
IH0KK307CisKK3ZvaWQgcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhHcmFwaCYgZ3JhcGgpCit7Cisg
ICAgcnVuUGhhc2U8Q29uc3RhbnRGb2xkaW5nUGhhc2U+KGdyYXBoKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlX2gKKyNkZWZpbmUgREZHQ29uc3RhbnRGb2xkaW5nUGhhc2VfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworLy8gQ0ZBLWJhc2VkIGNv
bnN0YW50IGZvbGRpbmcuIFdhbGtzIHRob3NlIGJsb2NrcyBtYXJrZWQgYnkgdGhlIENGQSBhcyBo
YXZpbmcKKy8vIGluZmVycmVkIGNvbnN0YW50cywgYW5kIHJlcGxhY2VzIHRob3NlIG5vZGVzIHdp
dGggY29uc3RhbnRzIHdoaWxzdCBpbmplY3RpbmcKKy8vIFBoYW50b20gbm9kZXMgdG8ga2VlcCB0
aGUgY2hpbGRyZW4gYWxpdmUgKHdoaWNoIGlzIG5lY2Vzc2FyeSBmb3IgT1NSIGV4aXQpLgorCit2
b2lkIHBlcmZvcm1Db25zdGFudEZvbGRpbmcoR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdDb25z
dGFudEZvbGRpbmdQaGFzZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ry
aXZlci5jcHAJKHJldmlzaW9uIDExNDQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkRGR0J5dGVDb2RlUGFyc2VyLmgiCiAjaW5jbHVkZSAiREZHQ0ZBUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdDU0VQaGFzZS5oIgorI2luY2x1ZGUgIkRGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmgiCiAj
aW5jbHVkZSAiREZHRml4dXBQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0pJVENvbXBpbGVyLmgiCiAj
aW5jbHVkZSAiREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuaCIKQEAgLTYyLDkgKzYzLDEw
IEBAIGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAgICBwZXJmb3Jt
UmVkdW5kYW50UGhpRWxpbWluYXRpb24oZGZnKTsKICAgICBwZXJmb3JtUHJlZGljdGlvblByb3Bh
Z2F0aW9uKGRmZyk7CiAgICAgcGVyZm9ybUZpeHVwKGRmZyk7CisgICAgcGVyZm9ybUNGQShkZmcp
OworICAgIHBlcmZvcm1Db25zdGFudEZvbGRpbmcoZGZnKTsKICAgICBwZXJmb3JtQ1NFKGRmZyk7
CiAgICAgcGVyZm9ybVZpcnR1YWxSZWdpc3RlckFsbG9jYXRpb24oZGZnKTsKLSAgICBwZXJmb3Jt
Q0ZBKGRmZyk7CiAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygi
R3JhcGggYWZ0ZXIgb3B0aW1pemF0aW9uOlxuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMTQ0ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsMTYgQEAgcHVibGlj
OgogICAgICAgICBkZXJlZihub2RlLmNoaWxkMygpKTsKICAgICAgICAgbm9kZS5jaGlsZHJlbi5j
aGlsZDMoKSA9IEVkZ2UoKTsKICAgICB9CisgICAgCisgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFu
dChOb2RlSW5kZXggbm9kZUluZGV4LCB1bnNpZ25lZCBjb25zdGFudE51bWJlcikKKyAgICB7Cisg
ICAgICAgIGF0KG5vZGVJbmRleCkuY29udmVydFRvQ29uc3RhbnQoY29uc3RhbnROdW1iZXIpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KE5vZGVJbmRleCBub2RlSW5k
ZXgsIEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBjb252ZXJ0VG9Db25zdGFudChub2Rl
SW5kZXgsIG1fY29kZUJsb2NrLT5hZGRPckZpbmRDb25zdGFudCh2YWx1ZSkpOworICAgIH0KIAog
ICAgIC8vIENvZGVCbG9jayBpcyBvcHRpb25hbCwgYnV0IG1heSBhbGxvdyBhZGRpdGlvbmFsIGlu
Zm9ybWF0aW9uIHRvIGJlIGR1bXBlZCAoZS5nLiBJZGVudGlmaWVyIG5hbWVzKS4KICAgICB2b2lk
IGR1bXAoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5zZXJ0aW9uU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnNlcnRpb25T
ZXQuaAkocmV2aXNpb24gMTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
bnNlcnRpb25TZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBJbnNlcnRpb248RWxlbWVudFR5cGU+JiBpbnNlcnRpb24gPSBtX2luc2VydGlv
bnNbaW5kZXhJbkluc2VydGlvbnNdOwogICAgICAgICAgICAgc2l6ZV90IGZpcnN0SW5kZXggPSBp
bnNlcnRpb24uaW5kZXgoKSArIGluZGV4SW5JbnNlcnRpb25zOwogICAgICAgICAgICAgc2l6ZV90
IGluZGV4T2Zmc2V0ID0gaW5kZXhJbkluc2VydGlvbnMgKyAxOwotICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IGxhc3RJbmRleDsgaS0tID4gZmlyc3RJbmRleDspCisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gbGFzdEluZGV4OyAtLWkgPiBmaXJzdEluZGV4OykKICAgICAgICAgICAgICAg
ICBjb2xsZWN0aW9uW2ldID0gY29sbGVjdGlvbltpIC0gaW5kZXhPZmZzZXRdOwogICAgICAgICAg
ICAgY29sbGVjdGlvbltmaXJzdEluZGV4XSA9IGluc2VydGlvbi5lbGVtZW50KCk7CiAgICAgICAg
ICAgICBsYXN0SW5kZXggPSBmaXJzdEluZGV4OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDExNDQ4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDE2IEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbnZl
cnRUb0NvbnN0YW50KHVuc2lnbmVkIGNvbnN0YW50TnVtYmVyKQorICAgIHsKKyAgICAgICAgbV9v
cCA9IEpTQ29uc3RhbnQ7CisgICAgICAgIGlmIChtX2ZsYWdzICYgTm9kZU11c3RHZW5lcmF0ZSkK
KyAgICAgICAgICAgIG1fcmVmQ291bnQtLTsKKyAgICAgICAgbV9mbGFncyAmPSB+Tm9kZU11c3RH
ZW5lcmF0ZTsKKyAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKKyAgICAgICAgY2hp
bGRyZW4ucmVzZXQoKTsKKyAgICB9CisgICAgCiAgICAgSlNDZWxsKiB3ZWFrQ29uc3RhbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU0NlbGwqPihtX29wSW5mbyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIEpTVmFsdWU6OnB1dFRvUHJpbWl0
aXZlKEV4ZWNTdGF0ZSogCiAgICAgcmV0dXJuOwogfQogCi1jaGFyKiBKU1ZhbHVlOjpkZXNjcmlw
dGlvbigpCitjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3Np
emVdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNp
b24gMTE0NDgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNWYWxpZENhbGxlZSgpOwogCi0gICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7CisgICAgICAg
IGNoYXIqIGRlc2NyaXB0aW9uKCkgY29uc3Q7CiAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNPYmplY3QqIHN5bnRoZXNpemVQcm90b3R5cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAK
</data>
<flag name="review"
          id="142778"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>