<?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>146429</bug_id>
          
          <creation_ts>2015-06-29 15:07:47 -0700</creation_ts>
          <short_desc>[Content Extensions] Use ranges for DFA transitions</short_desc>
          <delta_ts>2015-10-29 20:48:42 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>146575</dup_id>
          
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105515</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 15:07:47 -0700</bug_when>
    <thetext>This will be faster and use less memory! 1st patch is WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105517</commentid>
    <comment_count>1</comment_count>
      <attachid>255781</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 15:09:53 -0700</bug_when>
    <thetext>Created attachment 255781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105962</commentid>
    <comment_count>2</comment_count>
      <attachid>255781</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-06-30 22:24:16 -0700</bug_when>
    <thetext>Comment on attachment 255781
Patch

Removing r? as the patch is a WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137775</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-29 20:48:42 -0700</bug_when>
    <thetext>Ben did this in another bug

*** This bug has been marked as a duplicate of bug 146575 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255781</attachid>
            <date>2015-06-29 15:09:53 -0700</date>
            <delta_ts>2015-06-30 22:24:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146429-20150629150903.patch</filename>
            <type>text/plain</type>
            <size>18909</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjA4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDE1LTA2LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gVXNlIHJhbmdlcyBmb3IgREZBIHRyYW5zaXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRl
c3RzLgorCisgICAgICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkE6Om1lbW9yeVVzZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmFjdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OnRyYW5zaXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpERkFOb2RlOjpmYWxsYmFja1RyYW5zaXRpb25E
ZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9k
ZTo6Y2hhbmdlRmFsbGJhY2tUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpERkFOb2RlOjphZGRGYWxsYmFja1RyYW5zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQU5vZGU6OmNvbnRhaW5zVHJhbnNpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6REZBTm9kZTo6a2lsbCk6CisgICAg
ICAgICogY29udGVudGV4dGVuc2lvbnMvREZBLmg6CisgICAgICAgICogY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGVDb21waWxlcjo6cmFuZ2VzKToKKyAgICAgICAgKiBjb250ZW50
ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQ29tYmluZXI6OmNvbWJpbmVERkFzKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRFeHRlbnNpb25zOjpERkFNZXJnZXI6OkRGQU1lcmdlcik6IERlbGV0ZWQuCisgICAgICAg
ICogY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpERkFNaW5pbWl6ZXI6Om1pbmltaXplKToKKyAgICAgICAgKiBj
b250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBTm9kZTo6aXNLaWxsZWQpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25z
L05GQVRvREZBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpORkFU
b0RGQTo6Y29udmVydCk6CisgICAgICAgIEhhY2t5IFdJUC4gIFBsZWFzZSBpbXByb3ZlLiAoT09Q
UyEpCisKIDIwMTUtMDYtMjcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgRm9udCBwYW5lbCBkb2Vzbid0IGdldCB1cGRhdGVkIHdoZW4gYm9sZGluZyB0ZXh0IHZp
YSBjbWQrYiBpbiBNYWlsIG9uIE9TIFgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRl
bnNpb25zL0RGQS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvREZBLmNwcAkocmV2aXNpb24gMTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBzaXpl
X3QgREZBOjptZW1vcnlVc2VkKCkgY29uc3QKIHsKICAgICByZXR1cm4gc2l6ZW9mKERGQSkKICAg
ICAgICAgKyBhY3Rpb25zLmNhcGFjaXR5KCkgKiBzaXplb2YodWludDY0X3QpCi0gICAgICAgICsg
dHJhbnNpdGlvbkNoYXJhY3RlcnMuY2FwYWNpdHkoKSAqIHNpemVvZih1aW50OF90KQorICAgICAg
ICArIHRyYW5zaXRpb25SYW5nZXMuY2FwYWNpdHkoKSAqIHNpemVvZihzdGQ6OnBhaXI8Y2hhciwg
Y2hhcj4pCiAgICAgICAgICsgdHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5jYXBhY2l0eSgpICogc2l6
ZW9mKHVpbnQzMl90KQogICAgICAgICArIG5vZGVzLmNhcGFjaXR5KCkgKiBzaXplb2YoREZBTm9k
ZSk7CiB9CkBAIC02MiwxMyArNjIsMTMgQEAgVmVjdG9yPHVpbnQ2NF90PiBERkFOb2RlOjphY3Rp
b25zKGNvbnN0IAogICAgIHJldHVybiB2ZWN0b3I7CiB9CiAgICAgCi1WZWN0b3I8c3RkOjpwYWly
PHVpbnQ4X3QsIHVpbnQzMl90Pj4gREZBTm9kZTo6dHJhbnNpdGlvbnMoY29uc3QgREZBJiBkZmEp
IGNvbnN0CitWZWN0b3I8REZBTm9kZTo6REZBVHJhbnNpdGlvbj4gREZBTm9kZTo6dHJhbnNpdGlv
bnMoY29uc3QgREZBJiBkZmEpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFVzZSBpdGVyYXRvcnMg
aW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBWZWN0b3IgZWxlbWVudHMuCi0gICAgVmVjdG9yPHN0ZDo6
cGFpcjx1aW50OF90LCB1aW50MzJfdD4+IHZlY3RvcjsKKyAgICBWZWN0b3I8REZBTm9kZTo6REZB
VHJhbnNpdGlvbj4gdmVjdG9yOwogICAgIHZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHRy
YW5zaXRpb25zTGVuZ3RoKCkpOwogICAgIGZvciAodWludDMyX3QgaSA9IG1fdHJhbnNpdGlvbnNT
dGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGg7ICsraSkK
LSAgICAgICAgdmVjdG9yLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihkZmEudHJhbnNp
dGlvbkNoYXJhY3RlcnNbaV0sIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ldKSk7CisgICAg
ICAgIHZlY3Rvci51bmNoZWNrZWRBcHBlbmQoREZBTm9kZTo6REZBVHJhbnNpdGlvbih7ZGZhLnRy
YW5zaXRpb25SYW5nZXNbaV0uZmlyc3QsIGRmYS50cmFuc2l0aW9uUmFuZ2VzW2ldLnNlY29uZCwg
ZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbaV19KSk7CiAgICAgcmV0dXJuIHZlY3RvcjsKIH0K
IApAQCAtNzcsMzQgKzc3LDM3IEBAIHVpbnQzMl90IERGQU5vZGU6OmZhbGxiYWNrVHJhbnNpdGlv
bkRlc3QKICAgICBSRUxFQVNFX0FTU0VSVChoYXNGYWxsYmFja1RyYW5zaXRpb24oKSk7CiAKICAg
ICAvLyBJZiB0aGVyZSBpcyBhIGZhbGxiYWNrIHRyYW5zaXRpb24sIGl0IGlzIGp1c3QgYWZ0ZXIg
dGhlIG90aGVyIHRyYW5zaXRpb25zIGFuZCBoYXMgYW4gaW52YWxpZCBBU0NJSSBjaGFyYWN0ZXIg
dG8gbWFyayBpdCBhcyBhIGZhbGxiYWNrIHRyYW5zaXRpb24uCi0gICAgQVNTRVJUKGRmYS50cmFu
c2l0aW9uQ2hhcmFjdGVyc1ttX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3Ro
XSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSk7CisgICAgQVNTRVJUKGRm
YS50cmFuc2l0aW9uUmFuZ2VzW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5n
dGhdLmZpcnN0ID09IC0xKTsKKyAgICBBU1NFUlQoZGZhLnRyYW5zaXRpb25SYW5nZXNbbV90cmFu
c2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0uc2Vjb25kID09IC0xKTsKICAgICBy
ZXR1cm4gZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnNbbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90
cmFuc2l0aW9uc0xlbmd0aF07CiB9CiAKIHZvaWQgREZBTm9kZTo6Y2hhbmdlRmFsbGJhY2tUcmFu
c2l0aW9uKERGQSYgZGZhLCB1aW50MzJfdCBuZXdEZXN0aW5hdGlvbikKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChoYXNGYWxsYmFja1RyYW5zaXRpb24oKSk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0
aW9uc0xlbmd0aF0gPT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCksICJXaGVu
IGNoYW5naW5nIGEgZmFsbGJhY2sgdHJhbnNpdGlvbiwgdGhlIGZhbGxiYWNrIHRyYW5zaXRpb24g
c2hvdWxkIGFscmVhZHkgYmUgbWFya2VkIGFzIHN1Y2giKTsKLSAgICBkZmEudHJhbnNpdGlvbkNo
YXJhY3RlcnNbbV90cmFuc2l0aW9uc1N0YXJ0ICsgbV90cmFuc2l0aW9uc0xlbmd0aF0gPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGRmYS50cmFuc2l0aW9uUmFuZ2VzW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNM
ZW5ndGhdLmZpcnN0ID09IC0xCisgICAgICAgICYmIGRmYS50cmFuc2l0aW9uUmFuZ2VzW21fdHJh
bnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGhdLnNlY29uZCA9PSAtMSwgIldoZW4g
Y2hhbmdpbmcgYSBmYWxsYmFjayB0cmFuc2l0aW9uLCB0aGUgZmFsbGJhY2sgdHJhbnNpdGlvbiBz
aG91bGQgYWxyZWFkeSBiZSBtYXJrZWQgYXMgc3VjaCIpOworICAgIGRmYS50cmFuc2l0aW9uUmFu
Z2VzW21fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGhdID0gc3RkOjptYWtl
X3BhaXIoLTEsIC0xKTsKICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1ttX3RyYW5zaXRp
b25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoXSA9IG5ld0Rlc3RpbmF0aW9uOwogfQogCiB2
b2lkIERGQU5vZGU6OmFkZEZhbGxiYWNrVHJhbnNpdGlvbihERkEmIGRmYSwgdWludDMyX3QgZGVz
dGluYXRpb24pCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJz
LnNpemUoKSA9PSBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5zaXplKCkpOwotICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfTUVTU0FHRShkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnMuc2l6ZSgpID09
IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNMZW5ndGgsICJBZGRpbmcgYSBmYWxs
YmFjayB0cmFuc2l0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgbm9kZSBpcyBhdCB0aGUg
ZW5kIik7Ci0gICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzLmFwcGVuZChzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ4X3Q+OjptYXgoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoZGZhLnRyYW5zaXRp
b25SYW5nZXMuc2l6ZSgpID09IGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zLnNpemUoKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKGRmYS50cmFuc2l0aW9uUmFuZ2VzLnNpemUo
KSA9PSBtX3RyYW5zaXRpb25zU3RhcnQgKyBtX3RyYW5zaXRpb25zTGVuZ3RoLCAiQWRkaW5nIGEg
ZmFsbGJhY2sgdHJhbnNpdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIG5vZGUgaXMgYXQg
dGhlIGVuZCIpOworICAgIGRmYS50cmFuc2l0aW9uUmFuZ2VzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cigtMSwgLTEpKTsKICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQoZGVzdGlu
YXRpb24pOwogICAgIEFTU0VSVCghKG1fZmxhZ3MgJiBIYXNGYWxsYmFja1RyYW5zaXRpb24pKTsK
ICAgICBtX2ZsYWdzIHw9IEhhc0ZhbGxiYWNrVHJhbnNpdGlvbjsKIH0KIAotYm9vbCBERkFOb2Rl
Ojpjb250YWluc1RyYW5zaXRpb24odWludDhfdCB0cmFuc2l0aW9uLCBERkEmIGRmYSkKK2Jvb2wg
REZBTm9kZTo6Y29udGFpbnNUcmFuc2l0aW9uKGNoYXIgdHJhbnNpdGlvbiwgREZBJiBkZmEpCiB7
CiAgICAgLy8gQ2FsbGVkIGZyb20gREZBTWluaW1pemVyLCB0aGlzIGxvb3BzIHRob3VnaCBhIG1h
eGltdW0gb2YgMTI4IHRyYW5zaXRpb25zLCBzbyBpdCdzIG5vdCB0b28gc2xvdy4KICAgICBBU1NF
UlQobV90cmFuc2l0aW9uc0xlbmd0aCA8PSAxMjgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG1f
dHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlvbnNM
ZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ldID09
IHRyYW5zaXRpb24pCisgICAgICAgIGlmIChkZmEudHJhbnNpdGlvblJhbmdlc1tpXS5maXJzdCA8
PSB0cmFuc2l0aW9uCisgICAgICAgICAgICAmJiBkZmEudHJhbnNpdGlvblJhbmdlc1tpXS5zZWNv
bmQgPj0gdHJhbnNpdGlvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMTcsNyArMTIwLDcgQEAgdm9pZCBERkFOb2RlOjpraWxsKERGQSYg
ZGZhKQogICAgIAogICAgIC8vIEludmFsaWRhdGUgdGhlIG5vdy11bnVzZWQgbWVtb3J5IGluIHRo
ZSBERkEgdG8gbWFrZSBmaW5kaW5nIGJ1Z3MgZWFzaWVyLgogICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdHJhbnNpdGlvbnNTdGFydDsgaSA8IG1fdHJhbnNpdGlvbnNTdGFydCArIG1fdHJhbnNpdGlv
bnNMZW5ndGg7ICsraSkgewotICAgICAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbaV0gPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsKKyAgICAgICAgZGZhLnRyYW5zaXRp
b25SYW5nZXNbaV0gPSBzdGQ6Om1ha2VfcGFpcigtMSwgLTEpOwogICAgICAgICBkZmEudHJhbnNp
dGlvbkRlc3RpbmF0aW9uc1tpXSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgo
KTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9hY3Rpb25zU3RhcnQ7IGkgPCBtX2Fj
dGlvbnNTdGFydCArIG1fYWN0aW9uc0xlbmd0aDsgKytpKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBLmgJKHJldmlzaW9uIDE4NjA4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IHN0cnVjdCBXRUJDT1JFX0VYUE9SVCBERkEgewogI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPHVp
bnQ2NF90PiBhY3Rpb25zOwotICAgIFZlY3Rvcjx1aW50OF90PiB0cmFuc2l0aW9uQ2hhcmFjdGVy
czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPGNoYXIsIGNoYXI+PiB0cmFuc2l0aW9uUmFuZ2VzOwog
ICAgIFZlY3Rvcjx1aW50MzJfdD4gdHJhbnNpdGlvbkRlc3RpbmF0aW9uczsKICAgICBWZWN0b3I8
REZBTm9kZT4gbm9kZXM7CiAgICAgdW5zaWduZWQgcm9vdCB7IDAgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGls
ZXIuY3BwCShyZXZpc2lvbiAxODYwODIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDEwICsy
MDQsMTQgQEAgVmVjdG9yPERGQUJ5dGVjb2RlQ29tcGlsZXI6OlJhbmdlPiBERkFCeQogICAgIG1l
bXNldChkZXN0aW5hdGlvbnMsIDB4ZmYsIHNpemVvZihkZXN0aW5hdGlvbnMpKTsKICAgICBjb25z
dCB1aW50MzJfdCBub0Rlc3RpbmF0aW9uID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46
Om1heCgpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbm9kZS50cmFuc2l0aW9ucyht
X2RmYSkpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQocGFpci5maXJzdCA8IFdURl9BUlJBWV9M
RU5HVEgoZGVzdGluYXRpb25zKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDog
bm9kZS50cmFuc2l0aW9ucyhtX2RmYSkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodHJhbnNp
dGlvbi5yYW5nZU1pbiA+PSAwKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodHJhbnNpdGlvbi5y
YW5nZU1heCA+PSAwKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHRyYW5zaXRpb24ucmFuZ2VNaW4pIDwgV1RGX0FSUkFZX0xFTkdUSChkZXN0aW5hdGlvbnMp
KTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHRyYW5zaXRp
b24ucmFuZ2VNYXgpIDwgV1RGX0FSUkFZX0xFTkdUSChkZXN0aW5hdGlvbnMpKTsKICAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkZXN0aW5hdGlvbnNbcGFpci5maXJzdF0gPT0gbm9EZXN0aW5h
dGlvbiwgIlRyYW5zaXRpb25zIHNob3VsZCBiZSB1bmlxdWUiKTsKLSAgICAgICAgZGVzdGluYXRp
b25zW3BhaXIuZmlyc3RdID0gcGFpci5zZWNvbmQ7CisgICAgICAgIGZvciAodWludDE2X3QgaSA9
IHRyYW5zaXRpb24ucmFuZ2VNaW47IGkgPD0gdHJhbnNpdGlvbi5yYW5nZU1heDsgKytpKQorICAg
ICAgICAgICAgZGVzdGluYXRpb25zW2ldID0gdHJhbnNpdGlvbi5kZXN0aW5hdGlvbjsKICAgICB9
CiAKICAgICBWZWN0b3I8UmFuZ2U+IHJhbmdlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFDb21iaW5lci5jcHAJKHJldmlzaW9uIDE4NjA4MikKKysr
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUNvbWJpbmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3Bh
Y2UgQ29udGVudEV4dGVuc2lvbnMgewotCisvKgogY2xhc3MgREZBTWVyZ2VyIHsKIHB1YmxpYzoK
ICAgICBERkFNZXJnZXIoY29uc3QgREZBJiBhLCBjb25zdCBERkEmIGIpCkBAIC0yMjQsMTkgKzIy
NCwyMCBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV91bnByb2Nlc3NlZE5vZGVz
OwogICAgIHVpbnQ2NF90IG1fdHJhbnNpdGlvblRhcmdldHNbMTI4XTsKIH07Ci0KKyovCiB2b2lk
IERGQUNvbWJpbmVyOjpjb21iaW5lREZBcyh1bnNpZ25lZCBtaW5pbXVtU2l6ZSwgc3RkOjpmdW5j
dGlvbjx2b2lkKERGQSYmKT4gaGFuZGxlcikKIHsKKyAgICBVTlVTRURfUEFSQU0obWluaW11bVNp
emUpOwogICAgIGlmIChtX2RmYXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2RmYXMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIGlmIChtX2Rm
YXNbaV0uZ3JhcGhTaXplKCkgPiBtaW5pbXVtU2l6ZSkgeworICAgICAgICAvLyBpZiAobV9kZmFz
W2ldLmdyYXBoU2l6ZSgpID4gbWluaW11bVNpemUpIHsKICAgICAgICAgICAgIGhhbmRsZXIoV1RG
Ojptb3ZlKG1fZGZhc1tpXSkpOwogICAgICAgICAgICAgbV9kZmFzLnJlbW92ZShpKTsKLSAgICAg
ICAgfQorICAgICAgICAvLyB9CiAgICAgfQotCisvKgogICAgIHdoaWxlICghbV9kZmFzLmlzRW1w
dHkoKSkgewogICAgICAgICBpZiAobV9kZmFzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgICAgICBo
YW5kbGVyKFdURjo6bW92ZShtX2RmYXMuZmlyc3QoKSkpOwpAQCAtMjU5LDYgKzI2MCw3IEBAIHZv
aWQgREZBQ29tYmluZXI6OmNvbWJpbmVERkFzKHVuc2lnbmVkIG0KICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9kZmFzLmFwcGVuZChjKTsKICAgICB9CisgKi8KIH0KIAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwCShy
ZXZpc2lvbiAxODYwODIpCisrKyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFN
aW5pbWl6ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucyB7Ci0KKy8qCiBuYW1lc3Bh
Y2UgewogCiAvLyBzaW1wbGlmeVRyYW5zaXRpb25zKCkgdHJpZXMgdG8gY29sbGFwc2UgaW5kaXZp
ZHVhbCB0cmFuc2l0aW9ucyBpbnRvIGZhbGxiYWNrIHRyYW5zaXRpb25zLgpAQCAtNTUsMTAgKzU1
LDExIEBAIHN0YXRpYyB2b2lkIHNpbXBsaWZ5VHJhbnNpdGlvbnMoREZBJiBkZmEKICAgICAgICAg
ICAgIHVuc2lnbmVkIGJlc3RUYXJnZXRTY29yZSA9IDA7CiAgICAgICAgICAgICBIYXNoTWFwPHVu
c2lnbmVkLCB1bnNpZ25lZCwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+OjpIYXNoLCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj4gdGFyZ2V0SGlzdG9ncmFtOwogICAg
ICAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0cmFuc2l0aW9uIDogZGZhTm9kZS50cmFuc2l0aW9u
cyhkZmEpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCF0cmFuc2l0aW9uLmZpcnN0KQorICAgICAg
ICAgICAgICAgIC8vIFRoaXMgc2VlbXMgYSBsaXR0bGUgc3VzcGljaW91cy4gSSdtIG5vdCBzdXJl
IHdoYXQgaXQncyBmb3IuIChPT1BTISkKKyAgICAgICAgICAgICAgICBpZiAoIXRyYW5zaXRpb24u
cmFuZ2VNaW4gJiYgIXRyYW5zaXRpb24ucmFuZ2VNYXgpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhbnNpdGlvblRhcmdldCA9IHRy
YW5zaXRpb24uc2Vjb25kOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHRyYW5zaXRpb25UYXJn
ZXQgPSB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uOwogICAgICAgICAgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gdGFyZ2V0SGlzdG9ncmFtLmFkZCh0cmFuc2l0aW9uVGFyZ2V0LCAxKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgICAgICAgICBh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKys7CkBAIC04OSwxMCArOTAsMTAgQEAgc3RhdGljIHZv
aWQgc2ltcGxpZnlUcmFuc2l0aW9ucyhERkEmIGRmYQogICAgICAgICBkZmFOb2RlLnNldEhhc0Zh
bGxiYWNrVHJhbnNpdGlvbldpdGhvdXRDaGFuZ2luZ0RGQSh3aWxsSGF2ZUZhbGxiYWNrKTsKICAg
ICAgICAgCiAgICAgICAgIGlmICh3aWxsSGF2ZUZhbGxiYWNrKSB7Ci0gICAgICAgICAgICBWZWN0
b3I8c3RkOjpwYWlyPHVpbnQ4X3QsIHVpbnQzMl90Pj4gdHJhbnNpdGlvbnMgPSBkZmFOb2RlLnRy
YW5zaXRpb25zKGRmYSk7CisgICAgICAgICAgICBhdXRvIHRyYW5zaXRpb25zID0gZGZhTm9kZS50
cmFuc2l0aW9ucyhkZmEpOwogICAgICAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlU2xvdENvdW50
ID0gdHJhbnNpdGlvbnMuc2l6ZSgpICsgaGFkRmFsbGJhY2tUcmFuc2l0aW9uOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHRyYW5zaXRpb25zW2ldLnNlY29uZCA9PSBuZXdGYWxsYmFja0Rl
c3RpbmF0aW9uKQorICAgICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uc1tpXS5kZXN0aW5hdGlv
biA9PSBuZXdGYWxsYmFja0Rlc3RpbmF0aW9uKQogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0
aW9ucy5yZW1vdmUoaS0tKTsKICAgICAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMDEsMTYgKzEw
MiwxNiBAQCBzdGF0aWMgdm9pZCBzaW1wbGlmeVRyYW5zaXRpb25zKERGQSYgZGZhCiAgICAgICAg
ICAgICB1bnNpZ25lZCBmaXJzdFNsb3QgPSBkZmFOb2RlLnRyYW5zaXRpb25zU3RhcnQoKTsKICAg
ICAgICAgICAgIGRmYU5vZGUucmVzZXRUcmFuc2l0aW9ucyhmaXJzdFNsb3QsIHRyYW5zaXRpb25z
LnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdHJhbnNpdGlv
bnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkNoYXJhY3Rl
cnNbZmlyc3RTbG90ICsgaV0gPSB0cmFuc2l0aW9uc1tpXS5maXJzdDsKLSAgICAgICAgICAgICAg
ICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9uc1tmaXJzdFNsb3QgKyBpXSA9IHRyYW5zaXRpb25z
W2ldLnNlY29uZDsKKyAgICAgICAgICAgICAgICBkZmEudHJhbnNpdGlvblJhbmdlc1tmaXJzdFNs
b3QgKyBpXSA9IHN0ZDo6bWFrZV9wYWlyKHRyYW5zaXRpb25zW2ldLnJhbmdlTWluLCB0cmFuc2l0
aW9uc1tpXS5yYW5nZU1heCk7CisgICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5h
dGlvbnNbZmlyc3RTbG90ICsgaV0gPSB0cmFuc2l0aW9uc1tpXS5kZXN0aW5hdGlvbjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRyYW5zaXRpb25zLnNpemUo
KTsgaSA8IGF2YWlsYWJsZVNsb3RDb3VudDsgKytpKSB7CiAgICAgICAgICAgICAgICAgLy8gSW52
YWxpZGF0ZSBub3ctdW51c2VkIG1lbW9yeSB0byBtYWtlIGZpbmRpbmcgYnVncyBlYXNpZXIuCi0g
ICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25DaGFyYWN0ZXJzW2ZpcnN0U2xvdCArIGldID0g
c3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCk7CisgICAgICAgICAgICAgICAgZGZh
LnRyYW5zaXRpb25SYW5nZXNbZmlyc3RTbG90ICsgaV0gPSBzdGQ6Om1ha2VfcGFpcigtMSwgLTEp
OwogICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGluYXRpb25zW2ZpcnN0U2xvdCAr
IGldID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKHdpbGxIYXZlRmFsbGJhY2spIHsKLSAgICAgICAgICAgICAgICBk
ZmEudHJhbnNpdGlvbkNoYXJhY3RlcnNbZmlyc3RTbG90ICsgdHJhbnNpdGlvbnMuc2l6ZSgpXSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpOworICAgICAgICAgICAgICAgIGRm
YS50cmFuc2l0aW9uUmFuZ2VzW2ZpcnN0U2xvdCArIHRyYW5zaXRpb25zLnNpemUoKV0gPSBzdGQ6
Om1ha2VfcGFpcigtMSwgLTEpOwogICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uRGVzdGlu
YXRpb25zW2ZpcnN0U2xvdCArIHRyYW5zaXRpb25zLnNpemUoKV0gPSBuZXdGYWxsYmFja0Rlc3Rp
bmF0aW9uOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNzEsNyArMjcyLDcgQEAgcHVi
bGljOgogICAgICAgICAvLyBDb3VudCB0aGUgbnVtYmVyIG9mIGluY29taW5nIHRyYW5zaXRpb25z
IHBlciBub2RlLgogICAgICAgICBmb3IgKGNvbnN0IERGQU5vZGUmIGRmYU5vZGUgOiBkZmEubm9k
ZXMpIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdHJhbnNpdGlvbiA6IGRmYU5vZGUu
dHJhbnNpdGlvbnMoZGZhKSkKLSAgICAgICAgICAgICAgICArK21fZmxhdHRlbmVkVHJhbnNpdGlv
bnNTdGFydE9mZnNldFBlck5vZGVbdHJhbnNpdGlvbi5zZWNvbmRdOworICAgICAgICAgICAgICAg
ICsrbV9mbGF0dGVuZWRUcmFuc2l0aW9uc1N0YXJ0T2Zmc2V0UGVyTm9kZVt0cmFuc2l0aW9uLmRl
c3RpbmF0aW9uXTsKICAgICAgICAgICAgIGlmIChkZmFOb2RlLmhhc0ZhbGxiYWNrVHJhbnNpdGlv
bigpKQogICAgICAgICAgICAgICAgICsrbV9mbGF0dGVuZWRGYWxsYmFja1RyYW5zaXRpb25zU3Rh
cnRPZmZzZXRQZXJOb2RlW2RmYU5vZGUuZmFsbGJhY2tUcmFuc2l0aW9uRGVzdGluYXRpb24oZGZh
KV07CiAgICAgICAgIH0KQEAgLTMwOSwxMiArMzEwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmYS5ub2Rlcy5zaXplKCk7ICsraSkgewogICAgICAgICAg
ICAgY29uc3QgREZBTm9kZSYgZGZhTm9kZSA9IGRmYS5ub2Rlc1tpXTsKICAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgdHJhbnNpdGlvbiA6IGRmYU5vZGUudHJhbnNpdGlvbnMoZGZhKSkgewot
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJbmRleCA9IHRyYW5zaXRpb24uc2Vj
b25kOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHRhcmdldE5vZGVJbmRleCA9IHRyYW5zaXRp
b24uZGVzdGluYXRpb247CiAKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzdGFydCA9IG1fZmxh
dHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSBtX2ZsYXR0ZW5lZFRyYW5zaXRpb25zU2l6
ZVBlck5vZGVbdGFyZ2V0Tm9kZUluZGV4XTsKIAotICAgICAgICAgICAgICAgIG1fZmxhdHRlbmVk
VHJhbnNpdGlvbnNbc3RhcnQgKyBvZmZzZXRdID0gVHJhbnNpdGlvbih7IGksIHRhcmdldE5vZGVJ
bmRleCwgdHJhbnNpdGlvbi5maXJzdCB9KTsKKyAgICAgICAgICAgICAgICBtX2ZsYXR0ZW5lZFRy
YW5zaXRpb25zW3N0YXJ0ICsgb2Zmc2V0XSA9IFRyYW5zaXRpb24oeyBpLCB0YXJnZXROb2RlSW5k
ZXgsIHRyYW5zaXRpb24ucmFuZ2VNaW4sIHRyYW5zaXRpb24ucmFuZ2VNYXggfSk7CiAKICAgICAg
ICAgICAgICAgICArK21fZmxhdHRlbmVkVHJhbnNpdGlvbnNTaXplUGVyTm9kZVt0YXJnZXROb2Rl
SW5kZXhdOwogICAgICAgICAgICAgfQpAQCAtNDEzLDcgKzQxNCw4IEBAIHByaXZhdGU6CiAgICAg
c3RydWN0IFRyYW5zaXRpb24gewogICAgICAgICB1bnNpZ25lZCBzb3VyY2U7CiAgICAgICAgIHVu
c2lnbmVkIHRhcmdldDsKLSAgICAgICAgdWludDE2X3QgY2hhcmFjdGVyOworICAgICAgICBjaGFy
IHJhbmdlTWluOworICAgICAgICBjaGFyIHJhbmdlTWF4OwogICAgIH07CiAKICAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fZmxhdHRlbmVkVHJhbnNpdGlvbnNTdGFydE9mZnNldFBlck5vZGU7CkBAIC00
OTEsOSArNDkzLDEyIEBAIHN0cnVjdCBBY3Rpb25LZXlIYXNoVHJhaXRzIDogcHVibGljIFdURjoK
IH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZS4KLQorKi8KIHZvaWQgREZBTWluaW1pemVy
OjptaW5pbWl6ZShERkEmIGRmYSkKIHsKKyAgICBVTlVTRURfUEFSQU0oZGZhKTsKKyAgICByZXR1
cm47CisgICAgLyoKICAgICBzaW1wbGlmeVRyYW5zaXRpb25zKGRmYSk7CiAKICAgICBGdWxsR3Jh
cGhQYXJ0aXRpb24gZnVsbEdyYXBoUGFydGl0aW9uKGRmYSk7CkBAIC01NDYsNyArNTUxLDcgQEAg
dm9pZCBERkFNaW5pbWl6ZXI6Om1pbmltaXplKERGQSYgZGZhKQogICAgIGZvciAoREZBTm9kZSYg
bm9kZSA6IGRmYS5ub2RlcykgewogICAgICAgICBhdXRvIG5vZGVUcmFuc2l0aW9ucyA9IG5vZGUu
dHJhbnNpdGlvbnMoZGZhKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5vZGUu
dHJhbnNpdGlvbnNMZW5ndGgoKTsgKytpKQotICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25EZXN0
aW5hdGlvbnNbbm9kZS50cmFuc2l0aW9uc1N0YXJ0KCkgKyBpXSA9IHJlbG9jYXRpb25WZWN0b3Jb
bm9kZVRyYW5zaXRpb25zW2ldLnNlY29uZF07CisgICAgICAgICAgICBkZmEudHJhbnNpdGlvbkRl
c3RpbmF0aW9uc1tub2RlLnRyYW5zaXRpb25zU3RhcnQoKSArIGldID0gcmVsb2NhdGlvblZlY3Rv
cltub2RlVHJhbnNpdGlvbnNbaV0uZGVzdGluYXRpb25dOwogICAgICAgICBpZiAobm9kZS5oYXNG
YWxsYmFja1RyYW5zaXRpb24oKSkKICAgICAgICAgICAgIG5vZGUuY2hhbmdlRmFsbGJhY2tUcmFu
c2l0aW9uKGRmYSwgcmVsb2NhdGlvblZlY3Rvcltub2RlLmZhbGxiYWNrVHJhbnNpdGlvbkRlc3Rp
bmF0aW9uKGRmYSldKTsKICAgICB9CkBAIC01NTYsNiArNTYxLDcgQEAgdm9pZCBERkFNaW5pbWl6
ZXI6Om1pbmltaXplKERGQSYgZGZhKQogICAgIHNpbXBsaWZ5VHJhbnNpdGlvbnMoZGZhKTsKIAog
ICAgIGRmYS5yb290ID0gcmVsb2NhdGlvblZlY3RvcltkZmEucm9vdF07CisgICAgICovCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIENvbnRlbnRFeHRlbnNpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvREZBTm9kZS5oCShyZXZpc2lvbiAxODYwODIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDEzICs0MiwxOSBAQCBzdHJ1Y3QgREZBOwogLy8gdGhlIGFjdGlvbnMgZm9yIHRoYXQgc3RhdGUu
CiBjbGFzcyBERkFOb2RlIHsKIHB1YmxpYzoKKyAgICBzdHJ1Y3QgREZBVHJhbnNpdGlvbiB7Cisg
ICAgICAgIGNoYXIgcmFuZ2VNaW47CisgICAgICAgIGNoYXIgcmFuZ2VNYXg7CisgICAgICAgIHVp
bnQzMl90IGRlc3RpbmF0aW9uOworICAgIH07CisgICAgCiAgICAgLy8gRklYTUU6IFN0b3AgbWlu
aW1pemluZyBraWxsZWQgbm9kZXMgYW5kIGFkZCBBU1NFUlQoIWlzS2lsbGVkKCkpIGluIG1hbnkg
ZnVuY3Rpb25zIGhlcmUuCiAgICAgdm9pZCBraWxsKERGQSYpOwogICAgIFZlY3Rvcjx1aW50NjRf
dD4gYWN0aW9ucyhjb25zdCBERkEmKSBjb25zdDsKLSAgICBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ4
X3QsIHVpbnQzMl90Pj4gdHJhbnNpdGlvbnMoY29uc3QgREZBJikgY29uc3Q7CisgICAgVmVjdG9y
PERGQVRyYW5zaXRpb24+IHRyYW5zaXRpb25zKGNvbnN0IERGQSYpIGNvbnN0OwogICAgIHVpbnQz
Ml90IGZhbGxiYWNrVHJhbnNpdGlvbkRlc3RpbmF0aW9uKGNvbnN0IERGQSYpIGNvbnN0OwogICAg
IHZvaWQgYWRkRmFsbGJhY2tUcmFuc2l0aW9uKERGQSYsIHVpbnQzMl90IGRlc3RpbmF0aW9uKTsK
LSAgICBib29sIGNvbnRhaW5zVHJhbnNpdGlvbih1aW50OF90LCBERkEmKTsKKyAgICBib29sIGNv
bnRhaW5zVHJhbnNpdGlvbihjaGFyLCBERkEmKTsKICAgICB2b2lkIGNoYW5nZUZhbGxiYWNrVHJh
bnNpdGlvbihERkEmLCB1aW50MzJfdCBuZXdEZXN0aW5hdGlvbik7CiAgICAgCiAgICAgYm9vbCBp
c0tpbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3MgJiBJc0tpbGxlZDsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL05GQVRvREZBLmNwcAkocmV2aXNpb24g
MTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvTkZBVG9ERkEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDgsMjEgKzQ0OCwxOSBAQCBERkEgTkZBVG9ERkE6OmNvbnZl
cnQoTkZBJiBuZmEpCiAgICAgICAgIGlmICh1c2VGYWxsYmFja1RyYW5zaXRpb24pCiAgICAgICAg
ICAgICBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0ID0gZmluZEJlc3RGYWxsYmFja1RhcmdldChjb21i
aW5lZFJhbmdlTGlzdCwgcmFuZ2VUb1RhcmdldCk7CiAKLSAgICAgICAgdW5zaWduZWQgdHJhbnNp
dGlvbnNTdGFydCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFjdGVycy5zaXplKCk7CisgICAgICAgIHVu
c2lnbmVkIHRyYW5zaXRpb25zU3RhcnQgPSBkZmEudHJhbnNpdGlvblJhbmdlcy5zaXplKCk7CiAg
ICAgICAgIHVuc2lnbmVkIHJhbmdlVG9UYXJnZXRJbmRleCA9IDA7CiAKICAgICAgICAgZm9yIChj
b25zdCBORkFOb2RlUmFuZ2UmIHJhbmdlIDogY29tYmluZWRSYW5nZUxpc3QpIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIHRhcmdldE5vZGVJZCA9IHJhbmdlVG9UYXJnZXRbcmFuZ2VUb1RhcmdldElu
ZGV4XTsKIAogICAgICAgICAgICAgaWYgKCEodXNlRmFsbGJhY2tUcmFuc2l0aW9uICYmIHRhcmdl
dE5vZGVJZCA9PSBwcmVmZXJlZEZhbGxiYWNrVGFyZ2V0KSkgewotICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IHJhbmdlLmZpcnN0OyBpIDw9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihy
YW5nZS5sYXN0KTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRmYS50cmFuc2l0aW9uQ2hh
cmFjdGVycy5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oaSkpOwotICAgICAgICAgICAgICAg
ICAgICBkZmEudHJhbnNpdGlvbkRlc3RpbmF0aW9ucy5hcHBlbmQodGFyZ2V0Tm9kZUlkKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGZhLnRyYW5zaXRpb25SYW5nZXMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHJhbmdlLmZpcnN0LCByYW5nZS5sYXN0KSk7CisgICAgICAgICAg
ICAgICAgZGZhLnRyYW5zaXRpb25EZXN0aW5hdGlvbnMuYXBwZW5kKHRhcmdldE5vZGVJZCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICArK3JhbmdlVG9UYXJnZXRJbmRleDsKICAgICAgICAg
fQotICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0VuZCA9IGRmYS50cmFuc2l0aW9uQ2hhcmFj
dGVycy5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIHRyYW5zaXRpb25zRW5kID0gZGZhLnRyYW5z
aXRpb25SYW5nZXMuc2l6ZSgpOwogICAgICAgICB1bnNpZ25lZCB0cmFuc2l0aW9uc0xlbmd0aCA9
IHRyYW5zaXRpb25zRW5kIC0gdHJhbnNpdGlvbnNTdGFydDsKICAgICAgICAgdW5zaWduZWQgZGZh
Tm9kZUlkID0gdW5pcXVlTm9kZUlkU2V0SW1wbC0+bV9kZmFOb2RlSWQ7CiAgICAgICAgIERGQU5v
ZGUmIGRmYVNvdXJjZU5vZGUgPSBkZmEubm9kZXNbZGZhTm9kZUlkXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>