<?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>77855</bug_id>
          
          <creation_ts>2012-02-05 23:20:04 -0800</creation_ts>
          <short_desc>ValueToNumber and ValueToDouble nodes don&apos;t do anything and should be removed</short_desc>
          <delta_ts>2012-02-06 17:10:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>549758</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-05 23:20:04 -0800</bug_when>
    <thetext>If we have a and b both predicted number, then the following sequence:

1: ValueToNumber(a)
2: ValueToNumber(b)
3: ArithSub(@1, @2)

should be turned into:

1: ValueToNumberPure(a)  (skipped)
2: ValueToNumberPure(b)  (skipped)
3: ArithSub(a, b)

and hence we skip two moves and save a register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549778</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-05 23:56:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/10811325&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549799</commentid>
    <comment_count>2</comment_count>
      <attachid>125590</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 00:44:16 -0800</bug_when>
    <thetext>Created attachment 125590
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550381</commentid>
    <comment_count>3</comment_count>
      <attachid>125721</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 16:04:26 -0800</bug_when>
    <thetext>Created attachment 125721
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550443</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 17:10:15 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/106879</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125590</attachid>
            <date>2012-02-06 00:44:16 -0800</date>
            <delta_ts>2012-02-06 16:04:26 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>skipv2n_patch_1.diff</filename>
            <type>text/plain</type>
            <size>15194</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2Nzc5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUwIEBA
CisyMDEyLTAyLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFsdWVUb051bWJlciBpcyByZWR1bmRhbnQgaWYgaXQgaXMgcHVyZSBhbmQgaXRzIHVzZXIgYWxy
ZWFkeSBrbm93cyBob3cgdG8gcGVyZm9ybSB0aGUKKyAgICAgICAgY29udmVyc2lvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc4NTUKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEwODExMzI1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgUmVtb3ZpbmcgdGhlIFZhbHVlVG9OdW1iZXIgbm9k
ZSB3aGVuIGl0IGlzbid0IG5lZWRlZCB3aWxsIHNhdmUgYSByZWdpc3RlciBhbmQgYSBtb3ZlLgor
ICAgICAgICBEb2luZyB0aGlzIGFsc28gb2J2aWF0ZXMgdGhlIG5lZWQgZm9yIFZhbHVlVG9Eb3Vi
bGUsIHNpbmNlIHRoYXQgbm9kZSB3YXMgb25seQorICAgICAgICBpbnRyb2R1Y2VkIHRvIHByZXZl
bnQgb25lIG9wZXJhbmQgb2YgYSBiaW5hcnkgb3AgYmVpbmcgc3BlY3VsYXRlZCBpbnRlZ2VyIGV2
ZW4gd2hlbgorICAgICAgICB0aGUgb3Agd2FzIGdvaW5nIHRvIGJlIHBlcmZvcm1lZCBvbiBkb3Vi
bGVzLiBOb3cgdGhhdCBjYXNlIGlzIHN1YnN1bWVkIHVuZGVyCisgICAgICAgIFZhbHVlVG9OdW1i
ZXIgcmVtb3ZhbCwgYW5kIHRoZSBiaW5hcnkgb3Agd2lsbCBkbyBhbGwgb2YgdGhlIHdvcmsgb2Yg
Y29udmVyc2lvbiAoYW5kCisgICAgICAgIGluIHRoZSBmb3JtZXIgVmFsdWVUb0RvdWJsZSBjYXNl
IGl0IHdpbGwgY29udmVydCBib3RoIG9wZXJhbmRzIHRvIGRvdWJsZSkuCisgICAgICAgIAorICAg
ICAgICBUaGUgVmFsdWVUb051bWJlciBub2RlcyBhcmUgcmVtb3ZlZCBieSBtYXJraW5nIHRoZW0g
cHVyZSAoaS5lLiBubyBsb25nZXIKKyAgICAgICAgbXVzdC1nZW5lcmF0ZSkgaWYgdGhleSB3aWxs
IHNwZWN1bGF0ZSBudW1iZXIsIGFuZCB0aGVuIGhhdmluZyBub2RlcyB0aGF0IGFscmVhZHkKKyAg
ICAgICAgc3BlY3VsYXRlIG51bWJlciBza2lwIG92ZXIgVmFsdWVUb051bWJlciBub2Rlcy4gSW4g
bW9zdCBjYXNlcyB0aGlzIG1lYW5zIHRoYXQgYWxsCisgICAgICAgIFZhbHVlVG9OdW1iZXIgbm9k
ZXMgZ2V0IHJlbW92ZWQgZnJvbSB0aGUgZ3JhcGguCisgICAgICAgIAorICAgICAgICBUaGlzIGxv
b2tzIGxpa2UgYSAxJSB3aW4gb24gVjggKHdpdGggYSA1JSB3aW4gb24gY3J5cHRvKSBhbmQgYSAy
LTMlIHdpbiBvbiBLcmFrZW4sCisgICAgICAgIG1vc3RseSBkdWUgdG8gYSA+MTAlIHdpbiBvbiBn
YXVzc2lhbi1ibHVyLiBObyB3aW4gYW55d2hlcmUgZWxzZS4KKworICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEdyYXBoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6cmVyb3V0ZUNoaWxkKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZS5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNBcml0aE5v
ZGVGbGFncyk6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcm9wYWdhdG9yOjpwcm9wYWdhdGVOb2RlUHJlZGljdGlvbnMpOgorICAgICAgICAo
SlNDOjpERkc6OlByb3BhZ2F0b3I6OnZvdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0
b3I6OmRvUm91bmRPZkRvdWJsZVZvdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6c3BlY3VsYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1
cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmNhbm9uaWNhbGl6ZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbHVlUmVjb3ZlcnlGb3IpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0wMi0w
NSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRydzIGNoaWxk
IHJlZmVyZW5jZXMgZnJvbSBvbmUgbm9kZSB0byBhbm90aGVyIHNob3VsZCBoYXZlIHJvb20gZm9y
IHR5cGUgaW5mb3JtYXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTA2Nzc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDYg
KzI1Myw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8KICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKKyAgICBjYXNl
IFZhbHVlVG9JbnQzMlB1cmU6CiAgICAgICAgIGlmICghbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5z
aG91bGROb3RTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGlmIChtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZURvdWJsZSgpKQogICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOwpAQCAtMjYzLDYgKzI2
NCw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8KICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6CisgICAgY2FzZSBW
YWx1ZVRvTnVtYmVyUHVyZToKICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hv
dWxkTm90U3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CkBAIC0yNzMsMTEgKzI3NSw2IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8KICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0SW50MzIpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgIGNh
c2UgVmFsdWVUb0RvdWJsZToKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdE51bWJlcik7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERv
dWJsZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoK
ICAgICBjYXNlIEFyaXRoQWRkOiB7CiAgICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1
bGF0ZUludGVnZXIobm9kZSwgbV9jb2RlQmxvY2spKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMDY3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTQgQEAgcHVi
bGljOgogICAgICAgICBkZXJlZihub2RlLmNoaWxkMygpKTsKICAgICAgICAgbm9kZS5jaGlsZHJl
bi5jaGlsZDMoKSA9IE5vZGVVc2UoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZXJvdXRlQ2hp
bGQoTm9kZVVzZSYgbm9kZVVzZSwgTm9kZVVzZSBuZXdOb2RlVXNlKQorICAgIHsKKyAgICAgICAg
Tm9kZVVzZSBvbGROb2RlVXNlID0gbm9kZVVzZTsKKyAgICAgICAgbm9kZVVzZSA9IG5ld05vZGVV
c2U7CisgICAgICAgIHJlZihuZXdOb2RlVXNlKTsKKyAgICAgICAgZGVyZWYob2xkTm9kZVVzZSk7
CisgICAgfQogCiAgICAgLy8gQ29kZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFk
ZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMp
LgogICAgIHZvaWQgZHVtcChDb2RlQmxvY2sqID0gMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTA2Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OCw2ICsxOTgsNyBAQCBzdGF0aWMg
aW5saW5lIGNvbnN0IGNoYXIqIGFyaXRoTm9kZUZsYWdzCiAgICAgbWFjcm8oQml0VVJTaGlmdCwg
Tm9kZVJlc3VsdEludDMyKSBcCiAgICAgLyogQml0d2lzZSBvcGVyYXRvcnMgY2FsbCBUb0ludDMy
IG9uIHRoZWlyIG9wZXJhbmRzLiAqL1wKICAgICBtYWNybyhWYWx1ZVRvSW50MzIsIE5vZGVSZXN1
bHRJbnQzMiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhWYWx1ZVRvSW50MzJQdXJl
LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICAvKiBVc2VkIHRvIGJveCB0aGUgcmVzdWx0IG9mIFVS
U2hpZnQgbm9kZXMgKHJlc3VsdCBoYXMgcmFuZ2UgMC4uMl4zMi0xKS4gKi9cCiAgICAgbWFjcm8o
VUludDMyVG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBcCkBAIC0yMTMsOSArMjE0
LDcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwogICAgIG1hY3Jv
KEFyaXRoU3FydCwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIC8qIEFyaXRobWV0aWMgb3BlcmF0
b3JzIGNhbGwgVG9OdW1iZXIgb24gdGhlaXIgb3BlcmFuZHMuICovXAogICAgIG1hY3JvKFZhbHVl
VG9OdW1iZXIsIE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgXAot
ICAgIC8qIEEgdmFyaWFudCBvZiBWYWx1ZVRvTnVtYmVyLCB3aGljaCBhIGhpbnQgdGhhdCB0aGUg
cGFyZW50cyB3aWxsIGFsd2F5cyB1c2UgdGhpcyBhcyBhIGRvdWJsZS4gKi9cCi0gICAgbWFjcm8o
VmFsdWVUb0RvdWJsZSwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAg
ICBtYWNybyhWYWx1ZVRvTnVtYmVyUHVyZSwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIFwKICAg
ICAvKiBBZGQgb2YgdmFsdWVzIG1heSBlaXRoZXIgYmUgYXJpdGhtZXRpYywgb3IgcmVzdWx0IGlu
IHN0cmluZyBjb25jYXRlbmF0aW9uLiAqL1wKICAgICBtYWNybyhWYWx1ZUFkZCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIpIFwKQEAgLTUyMyw3ICs1
MjIsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAg
ICAgIGNhc2UgVmFsdWVUb051bWJlcjoKLSAgICAgICAgY2FzZSBWYWx1ZVRvRG91YmxlOgorICAg
ICAgICBjYXNlIFZhbHVlVG9OdW1iZXJQdXJlOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVy
OgogICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjYXNlIEFyaXRoU3ViOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShyZXZpc2lvbiAx
MDY3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgVmFsdWVUb051bWJlcjoKLSAgICAgICAgY2FzZSBWYWx1
ZVRvRG91YmxlOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFn
cyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTU5Nyw3ICs1OTYsNiBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIFZh
bHVlVG9Eb3VibGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2Ug
R2V0Qnl0ZUFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKQEAg
LTYwOSw3ICs2MDcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldFVpbnQzMkFycmF5TGVu
Z3RoOgogICAgICAgICBjYXNlIEdldEZsb2F0MzJBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBH
ZXRGbG9hdDY0QXJyYXlMZW5ndGg6Ci0gICAgICAgIGNhc2UgR2V0U3RyaW5nTGVuZ3RoOiB7Cisg
ICAgICAgIGNhc2UgR2V0U3RyaW5nTGVuZ3RoOgorICAgICAgICBjYXNlIFZhbHVlVG9OdW1iZXJQ
dXJlOgorICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMlB1cmU6IHsKICAgICAgICAgICAgIC8vIFRo
aXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0
aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9s
bG93cyB0aGlzIHBoYXNlLgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02
ODAsNyArNjgwLDYgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV9ncmFwaFtu
b2RlVXNlXS5vcCkgewogICAgICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6Ci0gICAgICAgIGNhc2Ug
VmFsdWVUb0RvdWJsZToKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgIGNhc2Ug
VUludDMyVG9OdW1iZXI6CiAgICAgICAgICAgICBub2RlVXNlID0gbV9ncmFwaFtub2RlVXNlXS5j
aGlsZDEoKTsKQEAgLTc3Niw3ICs3NzUsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBWYWx1ZVRvTnVtYmVyOgot
ICAgICAgICAgICAgY2FzZSBWYWx1ZVRvRG91YmxlOgogICAgICAgICAgICAgICAgIC8vIERvbid0
IHZvdGUuCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkBAIC04MzUs
MTQgKzgzMywyMCBAQCBwcml2YXRlOgogICAgICAgICB9IHdoaWxlIChtX2NoYW5nZWQpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIHRvRG91YmxlKE5vZGVVc2Ugbm9kZVVzZSkKKyAgICB2b2lkIHNw
ZWN1bGF0ZU51bWJlcihOb2RlVXNlJiBub2RlVXNlKQogICAgIHsKLSAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZVVzZV0ub3AgPT0gVmFsdWVUb051bWJlcikgewotI2lmIERGR19FTkFCTEUoREVCVUdf
UFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICBAJXUgLT4gVmFsdWVU
b0RvdWJsZSIsIG5vZGVVc2UuaW5kZXgoKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIG1fZ3JhcGhb
bm9kZVVzZV0ub3AgPSBWYWx1ZVRvRG91YmxlOworICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGlj
dGlvbihtX2dyYXBoW25vZGVVc2VdLnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHN3aXRjaCAobV9ncmFwaFtub2RlVXNlXS5vcCkgeworICAgICAgICBjYXNlIFZh
bHVlVG9OdW1iZXI6CisgICAgICAgIGNhc2UgVmFsdWVUb051bWJlclB1cmU6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihtX2dyYXBoW21fZ3JhcGhbbm9kZVVz
ZV0uY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IG1fZ3JhcGgucmVyb3V0ZUNoaWxkKG5vZGVVc2UsIG1fZ3JhcGhbbm9kZVVzZV0uY2hpbGQxKCkp
OwogICAgIH0KIAogICAgIHZvaWQgZml4dXBOb2RlKE5vZGUmIG5vZGUpCkBAIC04NjQsMTAgKzg2
OCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFw
aFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChsZWZ0ICYmIHJpZ2h0Ci0gICAgICAgICAgICAgICAgJiYgaXNOdW1iZXJQcmVkaWN0aW9u
KGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkKLSAgICAgICAgICAgICAgICAmJiAh
bV9ncmFwaC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUsIG1fY29kZUJsb2NrKSkgewot
ICAgICAgICAgICAgICAgIHRvRG91YmxlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAg
IHRvRG91YmxlKG5vZGUuY2hpbGQyKCkpOworICAgICAgICAgICAgICAgICYmIGlzTnVtYmVyUHJl
ZGljdGlvbihsZWZ0KSAmJiBpc051bWJlclByZWRpY3Rpb24ocmlnaHQpKSB7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGRyZW4uY2hpbGQxKCkpOworICAgICAgICAg
ICAgICAgIHNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxkcmVuLmNoaWxkMigpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NzcsMzcgKzg4MCwxOCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEFyaXRoTWF4OgogICAgICAgICBjYXNlIEFyaXRoTW9k
OgogICAgICAgICBjYXNlIEFyaXRoRGl2OiB7Ci0gICAgICAgICAgICBpZiAoIW5vZGVDYW5TcGVj
dWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAgICAgICB0
b0RvdWJsZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICB0b0RvdWJsZShub2RlLmNo
aWxkMigpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChsZWZ0ICYmIHJpZ2h0Ci0gICAgICAgICAgICAgICAgJiYgKChsZWZ0ICYgUHJlZGlj
dERvdWJsZSkgfHwgKHJpZ2h0ICYgUHJlZGljdERvdWJsZSkpKSB7Ci0gICAgICAgICAgICAgICAg
dG9Eb3VibGUobm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5j
aGlsZDIoKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIobm9k
ZS5jaGlsZHJlbi5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGVOdW1iZXIobm9kZS5j
aGlsZHJlbi5jaGlsZDIoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhBYnM6IHsKLSAgICAgICAgICAgIGlmICghbm9kZUNh
blNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgewotICAgICAgICAgICAg
ICAgIHRvRG91YmxlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAg
IGlmIChwcmVkaWN0aW9uICYgUHJlZGljdERvdWJsZSkKLSAgICAgICAgICAgICAgICB0b0RvdWJs
ZShub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlcihub2RlLmNoaWxk
cmVuLmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKLSAgICAgICAgICAgIHRvRG91YmxlKG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGRyZW4uY2hp
bGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAt
OTgxLDYgKzk2NSwyMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4u
Y2hpbGQzKCkgPSBOb2RlVXNlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6IHsKKyAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgdHlw
ZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYg
KGlzTnVtYmVyUHJlZGljdGlvbih0eXBlKSkgeworICAgICAgICAgICAgICAgIG5vZGUub3AgPSBW
YWx1ZVRvTnVtYmVyUHVyZTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmRlcmVmKG1fY29tcGls
ZUluZGV4KTsgLy8gTm8gbG9uZ2VyIE11c3RHZW5lcmF0ZQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKKyAg
ICAgICAgICAgIFByZWRpY3RlZFR5cGUgdHlwZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJl
ZGljdGlvbigpOworICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbih0eXBlKSkgewor
ICAgICAgICAgICAgICAgIG5vZGUub3AgPSBWYWx1ZVRvSW50MzJQdXJlOworICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZGVyZWYobV9jb21waWxlSW5kZXgpOyAvLyBObyBsb25nZXIgTXVzdEdlbmVy
YXRlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwMDQsMTAgKzEw
MDQsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG5vZGVJbmRleCA9PSBOb05vZGUpCiAgICAg
ICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAKLSAgICAgICAgaWYgKG1fZ3JhcGhbbm9k
ZUluZGV4XS5vcCA9PSBWYWx1ZVRvTnVtYmVyKQorICAgICAgICBpZiAobV9ncmFwaFtub2RlSW5k
ZXhdLm9wID09IFZhbHVlVG9OdW1iZXIgfHwgbV9ncmFwaFtub2RlSW5kZXhdLm9wID09IFZhbHVl
VG9OdW1iZXJQdXJlKQogICAgICAgICAgICAgbm9kZUluZGV4ID0gbV9ncmFwaFtub2RlSW5kZXhd
LmNoaWxkMSgpLmluZGV4KCk7CiAgICAgICAgIAotICAgICAgICBpZiAobV9ncmFwaFtub2RlSW5k
ZXhdLm9wID09IFZhbHVlVG9JbnQzMikKKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZUluZGV4XS5v
cCA9PSBWYWx1ZVRvSW50MzIgfHwgbV9ncmFwaFtub2RlSW5kZXhdLm9wID09IFZhbHVlVG9JbnQz
MlB1cmUpCiAgICAgICAgICAgICBub2RlSW5kZXggPSBtX2dyYXBoW25vZGVJbmRleF0uY2hpbGQx
KCkuaW5kZXgoKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDEwNjc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NTYsMTIgKzE4NTYs
MTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBjYXNlIFZhbHVlVG9JbnQzMjogeworICAgIGNhc2UgVmFsdWVU
b0ludDMyOgorICAgIGNhc2UgVmFsdWVUb0ludDMyUHVyZTogewogICAgICAgICBjb21waWxlVmFs
dWVUb0ludDMyKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFZhbHVl
VG9OdW1iZXI6IHsKKyAgICBjYXNlIFZhbHVlVG9OdW1iZXI6CisgICAgY2FzZSBWYWx1ZVRvTnVt
YmVyUHVyZTogewogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkTm90U3BlY3Vs
YXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhp
cywgb3AxKTsKQEAgLTE4NzcsMTQgKzE4NzksNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgVmFsdWVU
b0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotICAg
ICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wMS5mcHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAg
ZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0KICAgICBjYXNlIFZhbHVlQWRkOgogICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAg
ICAgIGNvbXBpbGVBZGQobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwNjc3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MzUsMTIgKzE5MzUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFZhbHVlVG9JbnQz
MjogeworICAgIGNhc2UgVmFsdWVUb0ludDMyOgorICAgIGNhc2UgVmFsdWVUb0ludDMyUHVyZTog
ewogICAgICAgICBjb21waWxlVmFsdWVUb0ludDMyKG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBjYXNlIFZhbHVlVG9OdW1iZXI6IHsKKyAgICBjYXNlIFZhbHVlVG9OdW1iZXI6
CisgICAgY2FzZSBWYWx1ZVRvTnVtYmVyUHVyZTogewogICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkTm90U3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKQEAgLTE5NTYsMTQgKzE5NTgsNiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAotICAgIGNhc2UgVmFsdWVUb0RvdWJsZTogewotICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzLCBvcDEpOwotICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9wMS5mcHIoKSwgcmVz
dWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxl
SW5kZXgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICBjYXNlIFZhbHVlQWRkOgogICAg
IGNhc2UgQXJpdGhBZGQ6CiAgICAgICAgIGNvbXBpbGVBZGQobm9kZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
MTA2Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMTIsMTAgKzEzMTIsMTEgQEAgVmFsdWVSZWNvdmVyeSBT
cGVjdWxhdGl2ZUpJVDo6Y29tcHV0ZVZhbAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgewogICAgICAgICAgICAg
ICAgICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVmFs
dWVUb0RvdWJsZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBWYWx1ZVRvTnVtYmVyUHVyZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9OdW1iZXJJbmRleCA9IGluZm8ubm9kZUlu
ZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBWYWx1ZVRvSW50MzI6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVUb0lu
dDMyUHVyZToKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9JbnQzMkluZGV4ID0gaW5m
by5ub2RlSW5kZXgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOgo=
</data>
<flag name="review"
          id="127121"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125721</attachid>
            <date>2012-02-06 16:04:26 -0800</date>
            <delta_ts>2012-02-06 16:07:14 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>removev2n_patch_1.diff</filename>
            <type>text/plain</type>
            <size>22021</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2ODY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBA
CisyMDEyLTAyLTA2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VmFsdWVUb051bWJlciBhbmQgVmFsdWVUb0RvdWJsZSBub2RlcyBkb24ndCBkbyBhbnl0aGluZyBh
bmQgc2hvdWxkIGJlIHJlbW92ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc3ODU1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDgxMTMyNT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJl
bW92ZWQgVmFsdWVUb051bWJlciBhbmQgVmFsdWVUb0RvdWJsZSwgYmVjYXVzZSB0aGUgb25seSB0
aGluZyB0aGV5IHdlcmUgZG9pbmcKKyAgICAgICAgd2FzIHdhc3RpbmcgcmVnaXN0ZXJzLgorICAg
ICAgICAKKyAgICAgICAgVGhpcyBsb29rcyBsaWtlIGEgMSUgd2luIG9uIFY4ICh3aXRoIGEgNSUg
d2luIG9uIGNyeXB0bykgYW5kIGEgMi0zJSB3aW4gb24gS3Jha2VuLAorICAgICAgICBtb3N0bHkg
ZHVlIHRvIGEgPjEwJSB3aW4gb24gZ2F1c3NpYW4tYmx1ci4gTm8gd2luIGFueXdoZXJlIGVsc2Uu
CisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0VG9JbnQzMik6
CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZU1pbk1heCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpYyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChERkcpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FyaXRoTm9kZUZsYWdzKToKKyAgICAgICAgKiBkZmcv
REZHUHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFn
YXRlQXJpdGhOb2RlRmxhZ3MpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3Bh
Z2F0ZU5vZGVQcmVkaWN0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6dm90
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6ZG9Sb3VuZE9mRG91YmxlVm90aW5n
KToKKyAgICAgICAgKFByb3BhZ2F0b3IpOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6
OmZpeHVwTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Y2Fub25pY2FsaXpl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsdWVSZWNvdmVyeUZvcik6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEy
LTAyLTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgV2luQ0UgYnVpbGQgZml4IGFmdGVyIHIxMDYxOTcuCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEw
Njc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MiwyMiArMjYyLDYgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpl
eGVjdXRlKE5vZGVJbmRleCBubwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRp
Y3RJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgY2FzZSBWYWx1ZVRv
TnVtYmVyOgotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGROb3RTcGVj
dWxhdGVJbnRlZ2VyKCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3ROdW1iZXIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQ
cmVkaWN0RG91YmxlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDMyKTsK
LSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOwotICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIAotICAgIGNhc2UgVmFsdWVUb0RvdWJsZToKLSAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7Ci0gICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIEFyaXRoQWRkOiB7CiAgICAgICAg
IGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSwgbV9jb2RlQmxvY2sp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkocmV2aXNpb24gMTA2Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMywxMCArMzEzLDYgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiB0b0ludDMyKGdldChvcGVyYW5kKSk7CiAg
ICAgfQotICAgIE5vZGVJbmRleCBnZXRUb051bWJlcihpbnQgb3BlcmFuZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0b051bWJlcihnZXQob3BlcmFuZCkpOwotICAgIH0KIAogICAgIC8vIFBlcmZv
cm0gYW4gRVM1IFRvSW50MzIgb3BlcmF0aW9uIC0gcmV0dXJucyBhIG5vZGUgb2YgdHlwZSBOb2Rl
UmVzdWx0SW50MzIuCiAgICAgTm9kZUluZGV4IHRvSW50MzIoTm9kZUluZGV4IGluZGV4KQpAQCAt
MzQxLDIzICszMzcsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChWYWx1
ZVRvSW50MzIsIGluZGV4KTsKICAgICB9CiAKLSAgICAvLyBQZXJmb3JtIGFuIEVTNSBUb051bWJl
ciBvcGVyYXRpb24gLSByZXR1cm5zIGEgbm9kZSBvZiB0eXBlIE5vZGVSZXN1bHREb3VibGUuCi0g
ICAgTm9kZUluZGV4IHRvTnVtYmVyKE5vZGVJbmRleCBpbmRleCkKLSAgICB7Ci0gICAgICAgIE5v
ZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKLQotICAgICAgICBpZiAobm9kZS5oYXNOdW1iZXJS
ZXN1bHQoKSkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLQotICAgICAgICBpZiAobm9kZS5v
cCA9PSBKU0NvbnN0YW50KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHYgPSB2YWx1ZU9mSlNDb25z
dGFudChpbmRleCk7Ci0gICAgICAgICAgICBpZiAodi5pc051bWJlcigpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBnZXRKU0NvbnN0YW50KG5vZGUuY29uc3RhbnROdW1iZXIoKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChWYWx1ZVRvTnVtYmVyLCBPcEluZm8oTm9k
ZVVzZUJvdHRvbSksIGluZGV4KTsKLSAgICB9Ci0gICAgCiAgICAgTm9kZUluZGV4IGdldEpTQ29u
c3RhbnRGb3JWYWx1ZShKU1ZhbHVlIGNvbnN0YW50VmFsdWUpCiAgICAgewogICAgICAgICB1bnNp
Z25lZCBjb25zdGFudEluZGV4ID0gbV9jb2RlQmxvY2stPmFkZE9yRmluZENvbnN0YW50KGNvbnN0
YW50VmFsdWUpOwpAQCAtMTE5OCwxMiArMTE3NywxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVNaW5NYXgoYm9vbCB1CiAgICAgfQogICAgICAKICAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPT0gMikgeyAvLyBNYXRoLm1pbih4KQotICAgICAgICBzZXQocmVzdWx0T3Bl
cmFuZCwgZ2V0VG9OdW1iZXIocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKSkp
OworICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1l
bnRUb09wZXJhbmQoMSkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9PSAzKSB7IC8vIE1hdGgubWluKHgsIHkp
Ci0gICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBhZGRUb0dyYXBoKG9wLCBPcEluZm8oTm9kZVVz
ZUJvdHRvbSksIGdldFRvTnVtYmVyKHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQo
MSkpLCBnZXRUb051bWJlcihyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDIpKSkp
OworICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgYWRkVG9HcmFwaChvcCwgT3BJbmZvKE5vZGVV
c2VCb3R0b20pLCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKSksIGdl
dChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5kKDIpKSkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0xMjMxLDcgKzEyMTAsNyBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vCiAgICAgICAgIGlmICghTWFjcm9Bc3NlbWJsZXI6
OnN1cHBvcnRzRmxvYXRpbmdQb2ludEFicygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBhZGRUb0dyYXBoKEFyaXRoQWJzLCBPcElu
Zm8oTm9kZVVzZUJvdHRvbSksIGdldFRvTnVtYmVyKHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRU
b09wZXJhbmQoMSkpKTsKKyAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGFkZFRvR3JhcGgo
QXJpdGhBYnMsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJn
dW1lbnRUb09wZXJhbmQoMSkpKTsKICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhp
dFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSkKICAgICAgICAg
ICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5tZXJnZUFyaXRoTm9kZUZsYWdzKE5vZGVNYXlPdmVyZmxv
dyk7CiAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBub2RlSW5kZXgpOwpAQCAtMTI1Niw3ICsx
MjM1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKGJvbwogICAgICAg
ICBpZiAoIU1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5nUG9pbnRTcXJ0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBzZXQocmVzdWx0T3BlcmFu
ZCwgYWRkVG9HcmFwaChBcml0aFNxcnQsIGdldFRvTnVtYmVyKHJlZ2lzdGVyT2Zmc2V0ICsgYXJn
dW1lbnRUb09wZXJhbmQoMSkpKSk7CisgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBhZGRUb0dy
YXBoKEFyaXRoU3FydCwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoMSkp
KSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCkBAIC0xNTEyLDcgKzE0
OTEsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAg
ICAgY2FzZSBvcF9wcmVfaW5jOiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZUluZGV4IG9wID0g
Z2V0VG9OdW1iZXIoc3JjRHN0KTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcCA9IGdldChzcmNE
c3QpOwogICAgICAgICAgICAgc2V0KHNyY0RzdCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFk
ZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcCwgb25lKCkpKSk7CiAgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9wcmVfaW5jKTsKICAgICAgICAgfQpAQCAtMTUyMSw3ICsxNTAwLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICAgICAgICAg
IHVuc2lnbmVkIHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBBU1NFUlQocmVzdWx0ICE9IHNyY0RzdCk7IC8vIFJlcXVpcmVkIGZvciBhc3N1bXB0
aW9ucyB3ZSBtYWtlIGR1cmluZyBPU1IuCi0gICAgICAgICAgICBOb2RlSW5kZXggb3AgPSBnZXRU
b051bWJlcihzcmNEc3QpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wID0gZ2V0KHNyY0RzdCk7
CiAgICAgICAgICAgICBzZXQocmVzdWx0LCBvcCk7CiAgICAgICAgICAgICBzZXQoc3JjRHN0LCBt
YWtlU2FmZShhZGRUb0dyYXBoKEFyaXRoQWRkLCBPcEluZm8oTm9kZVVzZUJvdHRvbSksIG9wLCBv
bmUoKSkpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Bvc3RfaW5jKTsKQEAgLTE1Mjks
NyArMTUwOCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAog
ICAgICAgICBjYXNlIG9wX3ByZV9kZWM6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHNyY0RzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBOb2RlSW5kZXgg
b3AgPSBnZXRUb051bWJlcihzcmNEc3QpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wID0gZ2V0
KHNyY0RzdCk7CiAgICAgICAgICAgICBzZXQoc3JjRHN0LCBtYWtlU2FmZShhZGRUb0dyYXBoKEFy
aXRoU3ViLCBPcEluZm8oTm9kZVVzZUJvdHRvbSksIG9wLCBvbmUoKSkpKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3ByZV9kZWMpOwogICAgICAgICB9CkBAIC0xNTM3LDcgKzE1MTYsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIGNhc2Ug
b3BfcG9zdF9kZWM6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgICAgICAgICAgTm9kZUluZGV4IG9wID0g
Z2V0VG9OdW1iZXIoc3JjRHN0KTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcCA9IGdldChzcmNE
c3QpOwogICAgICAgICAgICAgc2V0KHJlc3VsdCwgb3ApOwogICAgICAgICAgICAgc2V0KHNyY0Rz
dCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1YiwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBv
cCwgb25lKCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wb3N0X2RlYyk7CkBAIC0x
NTQ5LDM3ICsxNTI4LDM3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIE5vZGVJbmRleCBvcDEgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggb3AyID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaWYgKG1fZ3JhcGhbb3AxXS5oYXNO
dW1iZXJSZXN1bHQoKSAmJiBtX2dyYXBoW29wMl0uaGFzTnVtYmVyUmVzdWx0KCkpCi0gICAgICAg
ICAgICAgICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIG1ha2VTYWZlKGFk
ZFRvR3JhcGgoQXJpdGhBZGQsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgdG9OdW1iZXIob3AxKSwg
dG9OdW1iZXIob3AyKSkpKTsKKyAgICAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFwaChBcml0aEFkZCwgT3BJbmZvKE5vZGVV
c2VCb3R0b20pLCBvcDEsIG9wMikpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChWYWx1ZUFkZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcDEsIG9wMikpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2FkZCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX3N1
YjogewotICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldFRvTnVtYmVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldFRv
TnVtYmVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFr
ZVNhZmUoYWRkVG9HcmFwaChBcml0aFN1YiwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcDEsIG9w
MikpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3N1Yik7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX211bDogewogICAgICAgICAgICAgLy8gTXVsdGlwbHkgcmVxdWlyZXMgdGhh
dCB0aGUgaW5wdXRzIGFyZSBub3QgdHJ1bmNhdGVkLCB1bmZvcnR1bmF0ZWx5LgotICAgICAgICAg
ICAgTm9kZUluZGV4IG9wMSA9IGdldFRvTnVtYmVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOwotICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldFRvTnVtYmVyKGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRl
eCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAg
ICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFrZVNhZmUoYWRkVG9HcmFw
aChBcml0aE11bCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcDEsIG9wMikpKTsKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX211bCk7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX21v
ZDogewotICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldFRvTnVtYmVyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZUluZGV4IG9wMiA9IGdldFRv
TnVtYmVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgTm9k
ZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgbWFr
ZVNhZmUoYWRkVG9HcmFwaChBcml0aE1vZCwgT3BJbmZvKE5vZGVVc2VCb3R0b20pLCBvcDEsIG9w
MikpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX21vZCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX2RpdjogewotICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldFRvTnVt
YmVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZUlu
ZGV4IG9wMiA9IGdldFRvTnVtYmVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgTm9kZUluZGV4IG9wMSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIE5vZGVJbmRleCBvcDIgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgbWFrZURpdlNhZmUoYWRkVG9HcmFwaChBcml0aERpdiwgT3BJbmZvKE5vZGVV
c2VCb3R0b20pLCBvcDEsIG9wMikpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2Rpdik7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lv
biAxMDY3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjExLDExICsyMTEsNiBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGFy
aXRoTm9kZUZsYWdzCiAgICAgbWFjcm8oQXJpdGhNaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwKICAg
ICBtYWNybyhBcml0aE1heCwgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoU3Fy
dCwgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIC8qIEFyaXRobWV0aWMgb3BlcmF0b3JzIGNhbGwg
VG9OdW1iZXIgb24gdGhlaXIgb3BlcmFuZHMuICovXAotICAgIG1hY3JvKFZhbHVlVG9OdW1iZXIs
IE5vZGVSZXN1bHROdW1iZXIgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCi0gICAgXAotICAgIC8qIEEg
dmFyaWFudCBvZiBWYWx1ZVRvTnVtYmVyLCB3aGljaCBhIGhpbnQgdGhhdCB0aGUgcGFyZW50cyB3
aWxsIGFsd2F5cyB1c2UgdGhpcyBhcyBhIGRvdWJsZS4gKi9cCi0gICAgbWFjcm8oVmFsdWVUb0Rv
dWJsZSwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAg
LyogQWRkIG9mIHZhbHVlcyBtYXkgZWl0aGVyIGJlIGFyaXRobWV0aWMsIG9yIHJlc3VsdCBpbiBz
dHJpbmcgY29uY2F0ZW5hdGlvbi4gKi9cCiAgICAgbWFjcm8oVmFsdWVBZGQsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyKSBcCkBAIC01MjIsOCArNTE3
LDYgQEAgc3RydWN0IE5vZGUgewogICAgIGJvb2wgaGFzQXJpdGhOb2RlRmxhZ3MoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICBjYXNlIFZhbHVlVG9OdW1iZXI6Ci0gICAg
ICAgIGNhc2UgVmFsdWVUb0RvdWJsZToKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoKICAg
ICAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAgY2FzZSBBcml0aFN1YjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkocmV2aXNpb24gMTA2Nzc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDggKzEzOCw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVmFsdWVUb051bWJlcjoKLSAg
ICAgICAgY2FzZSBWYWx1ZVRvRG91YmxlOgogICAgICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7
CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0
aE5vZGVGbGFncyhmbGFncyk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM2MywxOSArMzYxLDYg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBWYWx1ZVRvTnVtYmVyOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24g
PSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHByZWRpY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAoIShwcmVkaWN0
aW9uICYgUHJlZGljdERvdWJsZSkgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3ROdW1iZXIpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwpAQCAt
NTk3LDcgKzU4Miw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgVmFsdWVUb0RvdWJsZToKICAgICAgICAgY2FzZSBH
ZXRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRCeXRlQXJyYXlMZW5ndGg6CiAgICAgICAg
IGNhc2UgR2V0SW50OEFycmF5TGVuZ3RoOgpAQCAtNjc5LDggKzY2Myw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB2b3RlKE5vZGVVc2Ugbm9kZVVzZSwgVmFyaWFibGVBY2Nlc3NEYXRhOjpCYWxsb3Qg
YmFsbG90KQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25vZGVVc2VdLm9wKSB7Ci0g
ICAgICAgIGNhc2UgVmFsdWVUb051bWJlcjoKLSAgICAgICAgY2FzZSBWYWx1ZVRvRG91YmxlOgog
ICAgICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjoK
ICAgICAgICAgICAgIG5vZGVVc2UgPSBtX2dyYXBoW25vZGVVc2VdLmNoaWxkMSgpOwpAQCAtNzc1
LDExICs3NTcsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHZvdGUobm9kZS5jaGlsZDEo
KSwgVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlRG91YmxlKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgVmFsdWVUb051bWJlcjoKLSAg
ICAgICAgICAgIGNhc2UgVmFsdWVUb0RvdWJsZToKLSAgICAgICAgICAgICAgICAvLyBEb24ndCB2
b3RlLgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAg
ICAgIGlmIChpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbikpCkBAIC04MzUsMTYgKzgxMiw2
IEBAIHByaXZhdGU6CiAgICAgICAgIH0gd2hpbGUgKG1fY2hhbmdlZCk7CiAgICAgfQogICAgIAot
ICAgIHZvaWQgdG9Eb3VibGUoTm9kZVVzZSBub2RlVXNlKQotICAgIHsKLSAgICAgICAgaWYgKG1f
Z3JhcGhbbm9kZVVzZV0ub3AgPT0gVmFsdWVUb051bWJlcikgewotI2lmIERGR19FTkFCTEUoREVC
VUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiICBAJXUgLT4gVmFs
dWVUb0RvdWJsZSIsIG5vZGVVc2UuaW5kZXgoKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIG1fZ3Jh
cGhbbm9kZVVzZV0ub3AgPSBWYWx1ZVRvRG91YmxlOwotICAgICAgICB9Ci0gICAgfQotCiAgICAg
dm9pZCBmaXh1cE5vZGUoTm9kZSYgbm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZS5zaG91
bGRHZW5lcmF0ZSgpKQpAQCAtODU3LDYwICs4MjQsNiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAg
ICAgIAogICAgICAgICBzd2l0Y2ggKG9wKSB7Ci0gICAgICAgIGNhc2UgVmFsdWVBZGQ6Ci0gICAg
ICAgIGNhc2UgQXJpdGhBZGQ6Ci0gICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
OwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobGVmdCAmJiBy
aWdodAotICAgICAgICAgICAgICAgICYmIGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051
bWJlclByZWRpY3Rpb24ocmlnaHQpCi0gICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguYWRkU2hv
dWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLCBtX2NvZGVCbG9jaykpIHsKLSAgICAgICAgICAgICAg
ICB0b0RvdWJsZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICB0b0RvdWJsZShub2Rl
LmNoaWxkMigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgICAgICAKLSAgICAgICAgY2FzZSBBcml0aE11bDoKLSAgICAgICAgY2FzZSBBcml0
aE1pbjoKLSAgICAgICAgY2FzZSBBcml0aE1heDoKLSAgICAgICAgY2FzZSBBcml0aE1vZDoKLSAg
ICAgICAgY2FzZSBBcml0aERpdjogewotICAgICAgICAgICAgaWYgKCFub2RlQ2FuU3BlY3VsYXRl
SW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgdG9Eb3Vi
bGUobm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICAgICAgdG9Eb3VibGUobm9kZS5jaGlsZDIo
KSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpOwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobGVmdCAmJiByaWdodAotICAgICAgICAgICAgICAgICYmICgobGVmdCAmIFByZWRpY3REb3Vi
bGUpIHx8IChyaWdodCAmIFByZWRpY3REb3VibGUpKSkgewotICAgICAgICAgICAgICAgIHRvRG91
YmxlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIHRvRG91YmxlKG5vZGUuY2hpbGQy
KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICBjYXNlIEFyaXRoQWJzOiB7Ci0gICAgICAgICAgICBpZiAoIW5vZGVD
YW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpIHsKLSAgICAgICAgICAg
ICAgICB0b0RvdWJsZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAg
ICBpZiAocHJlZGljdGlvbiAmIFByZWRpY3REb3VibGUpCi0gICAgICAgICAgICAgICAgdG9Eb3Vi
bGUobm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICAgICAgCi0gICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7Ci0gICAgICAgICAgICB0b0RvdWJsZShu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgICAgICBpZiAoIWlzSW50MzJQcmVk
aWN0aW9uKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMDA0LDkgKzkxNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIGlmIChu
b2RlSW5kZXggPT0gTm9Ob2RlKQogICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChtX2dyYXBoW25vZGVJbmRleF0ub3AgPT0gVmFsdWVUb051bWJlcikKLSAg
ICAgICAgICAgIG5vZGVJbmRleCA9IG1fZ3JhcGhbbm9kZUluZGV4XS5jaGlsZDEoKS5pbmRleCgp
OwotICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZUluZGV4XS5vcCA9PSBWYWx1ZVRv
SW50MzIpCiAgICAgICAgICAgICBub2RlSW5kZXggPSBtX2dyYXBoW25vZGVJbmRleF0uY2hpbGQx
KCkuaW5kZXgoKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDEwNjc3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4NjEsMzAgKzE4NjEsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgVmFs
dWVUb051bWJlcjogewotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkTm90U3Bl
Y3VsYXRlSW50ZWdlcigpKSB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgb3AxKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmVEb3VibGUob3AxLmZwcigpLCByZXN1
bHQuZnByKCkpOwotICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21w
aWxlSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQu
Z3ByKCksIG1fY29tcGlsZUluZGV4LCBvcDEuZm9ybWF0KCkpOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBjYXNlIFZhbHVlVG9Eb3VibGU6IHsKLSAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSBy
ZXN1bHQodGhpcywgb3AxKTsKLSAgICAgICAgbV9qaXQubW92ZURvdWJsZShvcDEuZnByKCksIHJl
c3VsdC5mcHIoKSk7Ci0gICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGls
ZUluZGV4KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBWYWx1ZUFkZDoKICAg
ICBjYXNlIEFyaXRoQWRkOgogICAgICAgICBjb21waWxlQWRkKG5vZGUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxMDY3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQwLDMwICsxOTQwLDYgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
LSAgICBjYXNlIFZhbHVlVG9OdW1iZXI6IHsKLSAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZE5vdFNwZWN1bGF0ZUludGVnZXIoKSkgewotICAgICAgICAgICAgU3BlY3VsYXRlRG91
YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBGUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9w
MS5mcHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQu
ZnByKCksIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5j
aGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKLSAgICAg
ICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIGludGVnZXJS
ZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBWYWx1ZVRvRG91YmxlOiB7Ci0gICAgICAgIFNw
ZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBG
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7Ci0gICAgICAgIG1faml0Lm1vdmVEb3VibGUo
b3AxLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZw
cigpLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAgY29tcGlsZUFkZChub2RlKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxMDY3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2OCwxNSArMTI2OCw4IEBAIFZh
bHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgIC8vIFRy
eSB0byBzZWUgaWYgdGhlcmUgaXMgYW4gYWx0ZXJuYXRlIG5vZGUgdGhhdCB3b3VsZCBjb250YWlu
IHRoZSB2YWx1ZSB3ZSB3YW50LgogICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGZvdXIgcG9zc2li
aWxpdGllczoKICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBWYWx1ZVRvTnVtYmVyOiBJ
ZiB0aGUgb25seSBsaXZlIHZlcnNpb24gb2YgdGhlIHZhbHVlIGlzIGEgVmFsdWVUb051bWJlciBu
b2RlCi0gICAgICAgICAgICAvLyAgICB0aGVuIGl0IG1lYW5zIHRoYXQgYWxsIHJlbWFpbmluZyB1
c2VzIG9mIHRoZSB2YWx1ZSB3b3VsZCBoYXZlIHBlcmZvcm1lZCBhCi0gICAgICAgICAgICAvLyAg
ICBWYWx1ZVRvTnVtYmVyIGNvbnZlcnNpb24gYW55d2F5LiBUaHVzLCB3ZSBjYW4gc3Vic3RpdHV0
ZSBWYWx1ZVRvTnVtYmVyLgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIFZhbHVlVG9J
bnQzMjogTGlrZXdpc2UsIGlmIHRoZSBvbmx5IHJlbWFpbmluZyBsaXZlIHZlcnNpb24gb2YgdGhl
IHZhbHVlIGlzCi0gICAgICAgICAgICAvLyAgICBWYWx1ZVRvSW50MzIsIHRoZW4gd2UgY2FuIHVz
ZSBpdC4gQnV0IGlmIHRoZXJlIGlzIGJvdGggYSBWYWx1ZVRvSW50MzIKLSAgICAgICAgICAgIC8v
ICAgIGFuZCBhIFZhbHVlVG9OdW1iZXIsIHRoZW4gd2UgYmV0dGVyIGdvIHdpdGggVmFsdWVUb051
bWJlciBiZWNhdXNlIGl0Ci0gICAgICAgICAgICAvLyAgICBtZWFucyB0aGF0IHNvbWUgcmVtYWlu
aW5nIHVzZXMgd291bGQgaGF2ZSBjb252ZXJ0ZWQgdG8gbnVtYmVyIHdoaWxlCi0gICAgICAgICAg
ICAvLyAgICBvdGhlcnMgd291bGQgaGF2ZSBjb252ZXJ0ZWQgdG8gSW50MzIuCisgICAgICAgICAg
ICAvLyBWYWx1ZVRvSW50MzI6IElmIHRoZSBvbmx5IHJlbWFpbmluZyBsaXZlIHZlcnNpb24gb2Yg
dGhlIHZhbHVlIGlzCisgICAgICAgICAgICAvLyAgICBWYWx1ZVRvSW50MzIsIHRoZW4gd2UgY2Fu
IHVzZSBpdC4KICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBVSW50MzJUb051bWJlcjog
SWYgdGhlIG9ubHkgbGl2ZSB2ZXJzaW9uIG9mIHRoZSB2YWx1ZSBpcyBhIFVJbnQzMlRvTnVtYmVy
CiAgICAgICAgICAgICAvLyAgICB0aGVuIHRoZSBvbmx5IHJlbWFpbmluZyB1c2VzIGFyZSBvbmVz
IHRoYXQgd2FudCBhIHByb3Blcmx5IGZvcm1lZCBudW1iZXIKQEAgLTEyOTcsNyArMTI5MCw2IEBA
IFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6OmNvbXB1dGVWYWwKICAgICAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgTm9k
ZUluZGV4IHZhbHVlVG9OdW1iZXJJbmRleCA9IE5vTm9kZTsKICAgICAgICAgICAgICAgICBOb2Rl
SW5kZXggdmFsdWVUb0ludDMySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IHVpbnQzMlRvTnVtYmVySW5kZXggPSBOb05vZGU7CiAgICAgICAgICAgICAKQEAgLTEzMTEs
MTAgKzEzMDMsNiBAQCBWYWx1ZVJlY292ZXJ5IFNwZWN1bGF0aXZlSklUOjpjb21wdXRlVmFsCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMVVuY2hlY2tlZCgpICE9IHZhbHVlU291
cmNlLm5vZGVJbmRleCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgewotICAgICAgICAgICAgICAgICAgICBj
YXNlIFZhbHVlVG9OdW1iZXI6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVmFsdWVUb0RvdWJs
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlVG9OdW1iZXJJbmRleCA9IGluZm8ubm9k
ZUluZGV4KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVRv
SW50MzJJbmRleCA9IGluZm8ubm9kZUluZGV4KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzMjcsOSArMTMxNSw3IEBAIFZhbHVlUmVjb3ZlcnkgU3BlY3VsYXRpdmVKSVQ6
OmNvbXB1dGVWYWwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBOb2RlSW5kZXggbm9kZUluZGV4VG9Vc2U7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVl
VG9OdW1iZXJJbmRleCAhPSBOb05vZGUpCi0gICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleFRv
VXNlID0gdmFsdWVUb051bWJlckluZGV4OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVl
VG9JbnQzMkluZGV4ICE9IE5vTm9kZSkKKyAgICAgICAgICAgICAgICBpZiAodmFsdWVUb0ludDMy
SW5kZXggIT0gTm9Ob2RlKQogICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXhUb1VzZSA9IHZh
bHVlVG9JbnQzMkluZGV4OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVpbnQzMlRvTnVtYmVy
SW5kZXggIT0gTm9Ob2RlKQogICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXhUb1VzZSA9IHVp
bnQzMlRvTnVtYmVySW5kZXg7Cg==
</data>
<flag name="review"
          id="127300"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>