<?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>29948</bug_id>
          
          <creation_ts>2009-09-30 19:29:36 -0700</creation_ts>
          <short_desc>Factor RedirectScheduler out of FrameLoader</short_desc>
          <delta_ts>2009-09-30 21:25:51 -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>Page Loading</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>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mjs</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151426</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 19:29:36 -0700</bug_when>
    <thetext>The code for dealing with redirect scheduling is a separable concern from the main &quot;loading a frame&quot; task of the FrameLoader.  I&apos;m going to take this in baby steps to help make the changes reviewable.  Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151428</commentid>
    <comment_count>1</comment_count>
      <attachid>40417</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 19:34:49 -0700</bug_when>
    <thetext>Created attachment 40417
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151430</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 19:40:13 -0700</bug_when>
    <thetext>I should also say that I&apos;ll remove the FrameLoader::schedule* methods in a future patch.  I didn&apos;t want to touch all the clients in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151432</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-30 20:00:20 -0700</bug_when>
    <thetext>Can RedirectScheduler go in its own file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151433</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 20:03:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Can RedirectScheduler go in its own file?

Absolutely.  I just wanted to make the diff easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151436</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 20:19:14 -0700</bug_when>
    <thetext>Future patch in https://bugs.webkit.org/show_bug.cgi?id=29950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151442</commentid>
    <comment_count>6</comment_count>
      <attachid>40417</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-30 21:07:43 -0700</bug_when>
    <thetext>Comment on attachment 40417
Patch v1

I suggest removing this comment, we don&apos;t need to worry about the next line being removed accidentally since it would break the build:

// We need an explicit dtor because ScheduledRedirection is an incomplete type here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151448</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-30 21:25:51 -0700</bug_when>
    <thetext>Committed r48958: &lt;http://trac.webkit.org/changeset/48958&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40417</attachid>
            <date>2009-09-30 19:34:49 -0700</date>
            <delta_ts>2009-09-30 21:07:43 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29948-20090930193447.patch</filename>
            <type>text/plain</type>
            <size>29202</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDVkMzhkNS4uYjBhOTRkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAwOS0wOS0zMCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZhY3RvciBSZWRpcmVjdFNjaGVkdWxlciBvdXQgb2YgRnJhbWVMb2FkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTQ4CisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIG5ldyBzdWItb2JqZWN0IG9mIEZyYW1l
LCByZWRpcmVjdFNjaGVkdWxlci4KKyAgICAgICAgVGhlIHJlZGlyZWN0U2NoZWR1bGVyIGlzIHJl
c3BvbnNpYmxlIGZvciBzY2hlZHVsaW5nIHJlZGlyZWN0cy4KKworICAgICAgICBUaGlzIGNoYW5n
ZSBsZWF2ZXMgdGhlIGNvZGUgZm9yIHRoZSByZWRpcmVjdFNjaGVkdWxlciBpbgorICAgICAgICBG
cmFtZUxvYWRlci5jcHAuICBBIGZ1dHVyZSBjaGFuZ2Ugd2lsbCBtb3ZlIHRoZSBjbGFzcyBpbnRv
IGl0cyBvd24KKyAgICAgICAgZmlsZS4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UgKGhv
cGVmdWxseSEpLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpSZWRpcmVjdFNjaGVkdWxlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6flJlZGlyZWN0U2NoZWR1bGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpyZWRpcmVjdFNjaGVkdWxlZER1cmluZ0xv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRp
ZE9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Bl
bik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6aXNTY2hlZHVsZWRMb2NhdGlvbkNoYW5nZVBlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnNjaGVkdWxlSFRUUFJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlZGlyZWN0U2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVGb3JtU3VibWlzc2lvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2NoZWR1bGVSZWZyZXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZGlyZWN0U2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OmxvY2F0aW9uQ2hhbmdlUGVuZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2
aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6dGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJvdmlzaW9uYWxMb2FkU3RhcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OnN0YXJ0VGltZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVkaXJlY3RTY2hlZHVsZXI6OmNhbmNlbCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpv
cGVuKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpjb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQpOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lOjpyZWRpcmVjdFNjaGVkdWxlcik6CisgICAgICAgICogcGFnZS9G
cmFtZS5oOgorCiAyMDA5LTA5LTMwICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCA5M2ExZjEwLi5jOTBhOTk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMDUsNyArMjA1
LDI4IEBAIHN0cnVjdCBTY2hlZHVsZWRSZWRpcmVjdGlvbiB7CiAgICAgICAgIEFTU0VSVCh0aGlz
LT5mb3JtU3RhdGUpOwogICAgIH0KIH07Ci0gCisKK1JlZGlyZWN0U2NoZWR1bGVyOjpSZWRpcmVj
dFNjaGVkdWxlcihGcmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV90
aW1lcih0aGlzLCAmUmVkaXJlY3RTY2hlZHVsZXI6OnRpbWVyRmlyZWQpCit7Cit9CisKK1JlZGly
ZWN0U2NoZWR1bGVyOjp+UmVkaXJlY3RTY2hlZHVsZXIoKQoreworfQorCitib29sIFJlZGlyZWN0
U2NoZWR1bGVyOjpyZWRpcmVjdFNjaGVkdWxlZER1cmluZ0xvYWQoKQoreworICAgIHJldHVybiBt
X3NjaGVkdWxlZFJlZGlyZWN0aW9uICYmIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPndhc0R1cmlu
Z0xvYWQ7Cit9CisKK3ZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OmNsZWFyKCkKK3sKKyAgICBtX3Rp
bWVyLnN0b3AoKTsKKyAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLmNsZWFyKCk7Cit9CisKICNp
ZiBFTkFCTEUoWEhUTUxNUCkKIHN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRBY2NlcHRIZWFkZXJb
XSA9ICJhcHBsaWNhdGlvbi94bWwsYXBwbGljYXRpb24vdm5kLndhcC54aHRtbCt4bWwsYXBwbGlj
YXRpb24veGh0bWwreG1sO3Byb2ZpbGU9J2h0dHA6Ly93d3cud2FwZm9ydW0ub3JnL3hodG1sJyx0
ZXh0L2h0bWw7cT0wLjksdGV4dC9wbGFpbjtxPTAuOCxpbWFnZS9wbmcsKi8qO3E9MC41IjsKICNl
bHNlCkBAIC0yNjcsMTIgKzI4OCwxMCBAQCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUq
IGZyYW1lLCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQogICAgICwgbV91bmxvYWRFdmVudEJl
aW5nRGlzcGF0Y2hlZChmYWxzZSkKICAgICAsIG1faXNDb21wbGV0ZShmYWxzZSkKICAgICAsIG1f
aXNMb2FkaW5nTWFpblJlc291cmNlKGZhbHNlKQotICAgICwgbV9jYW5jZWxsaW5nV2l0aExvYWRJ
blByb2dyZXNzKGZhbHNlKQogICAgICwgbV9uZWVkc0NsZWFyKGZhbHNlKQogICAgICwgbV9yZWNl
aXZlZERhdGEoZmFsc2UpCiAgICAgLCBtX2VuY29kaW5nV2FzQ2hvc2VuQnlVc2VyKGZhbHNlKQog
ICAgICwgbV9jb250YWluc1BsdWdJbnMoZmFsc2UpCi0gICAgLCBtX3JlZGlyZWN0aW9uVGltZXIo
dGhpcywgJkZyYW1lTG9hZGVyOjpyZWRpcmVjdGlvblRpbWVyRmlyZWQpCiAgICAgLCBtX2NoZWNr
VGltZXIodGhpcywgJkZyYW1lTG9hZGVyOjpjaGVja1RpbWVyRmlyZWQpCiAgICAgLCBtX3Nob3Vs
ZENhbGxDaGVja0NvbXBsZXRlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkQ2FsbENoZWNrTG9hZENv
bXBsZXRlKGZhbHNlKQpAQCAtMzI3LDcgKzM0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNldERl
ZmVyc0xvYWRpbmcoYm9vbCBkZWZlcnMpCiAgICAgICAgIG1fcG9saWN5RG9jdW1lbnRMb2FkZXIt
PnNldERlZmVyc0xvYWRpbmcoZGVmZXJzKTsKIAogICAgIGlmICghZGVmZXJzKSB7Ci0gICAgICAg
IHN0YXJ0UmVkaXJlY3Rpb25UaW1lcigpOworICAgICAgICBtX2ZyYW1lLT5yZWRpcmVjdFNjaGVk
dWxlcigpLT5zdGFydFRpbWVyKCk7CiAgICAgICAgIHN0YXJ0Q2hlY2tDb21wbGV0ZVRpbWVyKCk7
CiAgICAgfQogfQpAQCAtNjM0LDcgKzY1Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2Fk
aW5nKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5LCBEYXRhYmFzZVBvbGljCiAg
ICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGQt
PmxvYWRlcigpLT5zdG9wTG9hZGluZyh1bmxvYWRFdmVudFBvbGljeSk7CiAKLSAgICBjYW5jZWxS
ZWRpcmVjdGlvbigpOworICAgIG1fZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPmNhbmNlbCgp
OwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wKCkKQEAgLTY2MywxMyArNjgyLDYgQEAgYm9v
bCBGcmFtZUxvYWRlcjo6Y2xvc2VVUkwoKQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEZy
YW1lTG9hZGVyOjpjYW5jZWxSZWRpcmVjdGlvbihib29sIGNhbmNlbFdpdGhMb2FkSW5Qcm9ncmVz
cykKLXsKLSAgICBtX2NhbmNlbGxpbmdXaXRoTG9hZEluUHJvZ3Jlc3MgPSBjYW5jZWxXaXRoTG9h
ZEluUHJvZ3Jlc3M7Ci0KLSAgICBzdG9wUmVkaXJlY3Rpb25UaW1lcigpOwotfQotCiBLVVJMIEZy
YW1lTG9hZGVyOjppY29uVVJMKCkKIHsKICAgICAvLyBJZiB0aGlzIGlzbid0IGEgdG9wIGxldmVs
IGZyYW1lLCByZXR1cm4gbm90aGluZwpAQCAtNjk1LDEzICs3MDcsMTMgQEAgS1VSTCBGcmFtZUxv
YWRlcjo6aWNvblVSTCgpCiAKIGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwoY29uc3QgS1VS
TCYgdXJsKQogewotICAgIGlmIChtX3NjaGVkdWxlZFJlZGlyZWN0aW9uICYmIG1fc2NoZWR1bGVk
UmVkaXJlY3Rpb24tPndhc0R1cmluZ0xvYWQpIHsKKyAgICBpZiAobV9mcmFtZS0+cmVkaXJlY3RT
Y2hlZHVsZXIoKS0+cmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCkpIHsKICAgICAgICAgLy8g
QSByZWRpcmVjdCB3YXMgc2NoZWR1bGVkIGJlZm9yZSB0aGUgZG9jdW1lbnQgd2FzIGNyZWF0ZWQu
CiAgICAgICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIG9uZSBmcmFtZSBjaGFuZ2VzIGFub3Ro
ZXIgZnJhbWUncyBsb2NhdGlvbi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGNhbmNlbFJlZGlyZWN0aW9uKCk7CisgICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+
Y2FuY2VsKCk7CiAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmNsZWFyTGFzdEVkaXRDb21tYW5kKCk7
CiAgICAgY2xvc2VVUkwoKTsKIApAQCAtNzM4LDcgKzc1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpZEV4cGxpY2l0T3BlbigpCiAgICAgLy8gZnJvbSBhIHN1YnNlcXVlbnQgd2luZG93LmRvY3Vt
ZW50Lm9wZW4gLyB3aW5kb3cuZG9jdW1lbnQud3JpdGUgY2FsbC4gCiAgICAgLy8gQ2FuY2VsbGlu
ZyByZWRpcmVjdGlvbiBoZXJlIHdvcmtzIGZvciBhbGwgY2FzZXMgYmVjYXVzZSBkb2N1bWVudC5v
cGVuIAogICAgIC8vIGltcGxpY2l0bHkgcHJlY2VkZXMgZG9jdW1lbnQud3JpdGUuCi0gICAgY2Fu
Y2VsUmVkaXJlY3Rpb24oKTsgCisgICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+Y2Fu
Y2VsKCk7IAogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSAhPSBibGFua1VSTCgp
KQogICAgICAgICBtX1VSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogfQpAQCAtODAy
LDcgKzgxNCw3IEBAIFNjcmlwdFZhbHVlIEZyYW1lTG9hZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNhbmNl
bEFuZENsZWFyKCkKIHsKLSAgICBjYW5jZWxSZWRpcmVjdGlvbigpOworICAgIG1fZnJhbWUtPnJl
ZGlyZWN0U2NoZWR1bGVyKCktPmNhbmNlbCgpOwogCiAgICAgaWYgKCFtX2lzQ29tcGxldGUpCiAg
ICAgICAgIGNsb3NlVVJMKCk7CkBAIC04NTMsOCArODY1LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2xlYXIoYm9vbCBjbGVhcldpbmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3Rz
LCBib28KICAgICBpZiAoY2xlYXJTY3JpcHRPYmplY3RzKQogICAgICAgICBtX2ZyYW1lLT5zY3Jp
cHQoKS0+Y2xlYXJTY3JpcHRPYmplY3RzKCk7CiAKLSAgICBtX3JlZGlyZWN0aW9uVGltZXIuc3Rv
cCgpOwotICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24uY2xlYXIoKTsKKyAgICBtX2ZyYW1lLT5y
ZWRpcmVjdFNjaGVkdWxlcigpLT5jbGVhcigpOwogCiAgICAgbV9jaGVja1RpbWVyLnN0b3AoKTsK
ICAgICBtX3Nob3VsZENhbGxDaGVja0NvbXBsZXRlZCA9IGZhbHNlOwpAQCAtMTI5OCw3ICsxMzA5
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQoKQogICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdChtX2ZyYW1lKTsKICAgICBjaGVja0NhbGxJbXBsaWNpdENsb3NlKCk7IC8vIGlm
IHdlIGRpZG4ndCBkbyBpdCBiZWZvcmUKIAotICAgIHN0YXJ0UmVkaXJlY3Rpb25UaW1lcigpOwor
ICAgIG1fZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnN0YXJ0VGltZXIoKTsKIAogICAgIGNv
bXBsZXRlZCgpOwogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkpCkBAIC0xMzYzLDggKzEzNzQsMTgg
QEAgS1VSTCBGcmFtZUxvYWRlcjo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
cmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CiB9CiAKK2Jvb2wg
RnJhbWVMb2FkZXI6OmlzU2NoZWR1bGVkTG9jYXRpb25DaGFuZ2VQZW5kaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+bG9jYXRpb25DaGFuZ2VQ
ZW5kaW5nKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlSFRUUFJlZGlyZWN0aW9u
KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpCiB7CisgICAgbV9mcmFtZS0+cmVkaXJl
Y3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKK30KKwordm9pZCBS
ZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0
cmluZyYgdXJsKQorewogICAgIGlmIChkZWxheSA8IDAgfHwgZGVsYXkgPiBJTlRfTUFYIC8gMTAw
MCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKQEAgLTEzNzYsMTAgKzEzOTcsMTAgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6c2NoZWR1bGVIVFRQUmVkaXJlY3Rpb24oZG91YmxlIGRlbGF5LCBjb25z
dCBTdHJpbmcmIHVybCkKIAogICAgIC8vIFdlIHdhbnQgYSBuZXcgaGlzdG9yeSBpdGVtIGlmIHRo
ZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29uZC4KICAgICBpZiAoIW1fc2NoZWR1bGVkUmVk
aXJlY3Rpb24gfHwgZGVsYXkgPD0gbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXkpCi0gICAg
ICAgIHNjaGVkdWxlUmVkaXJlY3Rpb24obmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKGRlbGF5LCB1
cmwsIHRydWUsIGRlbGF5IDw9IDEsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBzY2hlZHVsZShu
ZXcgU2NoZWR1bGVkUmVkaXJlY3Rpb24oZGVsYXksIHVybCwgdHJ1ZSwgZGVsYXkgPD0gMSwgZmFs
c2UsIGZhbHNlKSk7CiB9CiAKLXN0YXRpYyBib29sIG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KEZy
YW1lKiB0YXJnZXRGcmFtZSkKK2Jvb2wgUmVkaXJlY3RTY2hlZHVsZXI6Om11c3RMb2NrQmFja0Zv
cndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSkKIHsKICAgICAvLyBOYXZpZ2F0aW9uIG9mIGEg
c3ViZnJhbWUgZHVyaW5nIGxvYWRpbmcgb2YgYW4gYW5jZXN0b3IgZnJhbWUgZG9lcyBub3QgY3Jl
YXRlIGEgbmV3IGJhY2svZm9yd2FyZCBpdGVtLgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJk
dXJpbmcgbG9hZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQg
ZXZlbnQgaGF2ZSBiZWVuIHJ1bi4KQEAgLTEzOTEsMTAgKzE0MTIsMTUgQEAgc3RhdGljIGJvb2wg
bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUqIHRhcmdldEZyYW1lKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKLX0gICAgCit9CiAKIHZvaWQg
RnJhbWVMb2FkZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKIHsKKyAgICBtX2ZyYW1lLT5yZWRpcmVjdFNj
aGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0
b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSk7Cit9CisKK3ZvaWQgUmVk
aXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tG
b3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSkKK3sKICAgICBpZiAoIW1fZnJhbWUtPnBh
Z2UoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDAzLDI0ICsxNDI5LDMyIEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyCiAKICAgICBsb2NrQmFja0ZvcndhcmRMaXN0ID0gbG9ja0JhY2tGb3J3
YXJkTGlzdCB8fCBtdXN0TG9ja0JhY2tGb3J3YXJkTGlzdChtX2ZyYW1lKTsKIAorICAgIEZyYW1l
TG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKKyAgICAKICAgICAvLyBJZiB0aGUg
VVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50
IG9uZSwgZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVk
IHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCiAgICAgS1VSTCBwYXJzZWRVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpOwotICAgIGlmIChwYXJzZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlm
aWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihtX1VSTCwgcGFyc2VkVVJM
KSkgewotICAgICAgICBjaGFuZ2VMb2NhdGlvbihjb21wbGV0ZVVSTCh1cmwpLCByZWZlcnJlciwg
bG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsKKyAgICBp
ZiAocGFyc2VkVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIobG9hZGVyLT51cmwoKSwgcGFyc2VkVVJMKSkgeworICAgICAgICBsb2Fk
ZXItPmNoYW5nZUxvY2F0aW9uKGxvYWRlci0+Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3YXNVc2VyR2VzdHVyZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICAvLyBIYW5kbGUgYSBsb2NhdGlvbiBjaGFuZ2Ugb2YgYSBw
YWdlIHdpdGggbm8gZG9jdW1lbnQgYXMgYSBzcGVjaWFsIGNhc2UuCiAgICAgLy8gVGhpcyBtYXkg
aGFwcGVuIHdoZW4gYSBmcmFtZSBjaGFuZ2VzIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIGZyYW1l
LgotICAgIGJvb2wgZHVyaW5nTG9hZCA9ICFtX2NvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9h
ZDsKKyAgICBib29sIGR1cmluZ0xvYWQgPSAhbG9hZGVyLT5jb21taXR0ZWRGaXJzdFJlYWxEb2N1
bWVudExvYWQoKTsKIAotICAgIHNjaGVkdWxlUmVkaXJlY3Rpb24obmV3IFNjaGVkdWxlZFJlZGly
ZWN0aW9uKHVybCwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCB3
YXNVc2VyR2VzdHVyZSwgZmFsc2UsIGR1cmluZ0xvYWQpKTsKKyAgICBzY2hlZHVsZShuZXcgU2No
ZWR1bGVkUmVkaXJlY3Rpb24odXJsLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9y
d2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlLCBmYWxzZSwgZHVyaW5nTG9hZCkpOwogfQogCiB2b2lk
IEZyYW1lTG9hZGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIGZyYW1lUmVxdWVzdCwKICAgICBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKIHsKKyAgICBtX2ZyYW1l
LT5yZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUZvcm1TdWJtaXNzaW9uKGZyYW1lUmVxdWVz
dCwgbG9ja0hpc3RvcnksIGV2ZW50LCBmb3JtU3RhdGUpOworfQorCit2b2lkIFJlZGlyZWN0U2No
ZWR1bGVyOjpzY2hlZHVsZUZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZy
YW1lUmVxdWVzdCwKKyAgICBib29sIGxvY2tIaXN0b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSkKK3sKICAgICBBU1NFUlQobV9mcmFt
ZS0+cGFnZSgpKTsKICAgICBBU1NFUlQoIWZyYW1lUmVxdWVzdC5pc0VtcHR5KCkpOwogCkBAIC0x
NDI5LDI1ICsxNDYzLDM1IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNjaGVkdWxlRm9ybVN1Ym1pc3Np
b24oY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgZnJhbWVSZXF1ZXN0LAogCiAgICAgLy8gSGFuZGxl
IGEgbG9jYXRpb24gY2hhbmdlIG9mIGEgcGFnZSB3aXRoIG5vIGRvY3VtZW50IGFzIGEgc3BlY2lh
bCBjYXNlLgogICAgIC8vIFRoaXMgbWF5IGhhcHBlbiB3aGVuIGEgZnJhbWUgY2hhbmdlcyB0aGUg
bG9jYXRpb24gb2YgYW5vdGhlciBmcmFtZS4KLSAgICBib29sIGR1cmluZ0xvYWQgPSAhbV9jb21t
aXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQ7CisgICAgYm9vbCBkdXJpbmdMb2FkID0gIW1fZnJh
bWUtPmxvYWRlcigpLT5jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKTsKIAotICAgIHNj
aGVkdWxlUmVkaXJlY3Rpb24obmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKGZyYW1lUmVxdWVzdCwg
bG9ja0hpc3RvcnksIG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1fZnJhbWUpLCBldmVudCwgZm9y
bVN0YXRlLCBkdXJpbmdMb2FkKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0
aW9uKGZyYW1lUmVxdWVzdCwgbG9ja0hpc3RvcnksIG11c3RMb2NrQmFja0ZvcndhcmRMaXN0KG1f
ZnJhbWUpLCBldmVudCwgZm9ybVN0YXRlLCBkdXJpbmdMb2FkKSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1VzZXJHZXN0dXJlKQogeworICAgIG1fZnJh
bWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxlUmVmcmVzaCh3YXNVc2VyR2VzdHVyZSk7
Cit9CisKK3ZvaWQgUmVkaXJlY3RTY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaChib29sIHdhc1Vz
ZXJHZXN0dXJlKQorewogICAgIGlmICghbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm47
CisgICAgCisgICAgY29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOwog
Ci0gICAgaWYgKG1fVVJMLmlzRW1wdHkoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGVSZWRpcmVjdGlvbihuZXcgU2NoZWR1bGVkUmVkaXJl
Y3Rpb24obV9VUkwuc3RyaW5nKCksIG1fb3V0Z29pbmdSZWZlcnJlciwgdHJ1ZSwgdHJ1ZSwgd2Fz
VXNlckdlc3R1cmUsIHRydWUsIGZhbHNlKSk7CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJl
ZGlyZWN0aW9uKHVybC5zdHJpbmcoKSwgbV9mcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSwgdHJ1ZSwgdHJ1ZSwgd2FzVXNlckdlc3R1cmUsIHRydWUsIGZhbHNlKSk7CiB9CiAKLWJv
b2wgRnJhbWVMb2FkZXI6OmlzTG9jYXRpb25DaGFuZ2UoY29uc3QgU2NoZWR1bGVkUmVkaXJlY3Rp
b24mIHJlZGlyZWN0aW9uKQorYm9vbCBSZWRpcmVjdFNjaGVkdWxlcjo6bG9jYXRpb25DaGFuZ2VQ
ZW5kaW5nKCkKIHsKLSAgICBzd2l0Y2ggKHJlZGlyZWN0aW9uLnR5cGUpIHsKKyAgICBpZiAoIW1f
c2NoZWR1bGVkUmVkaXJlY3Rpb24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRj
aCAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dHlwZSkgewogICAgICAgICBjYXNlIFNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlvbjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6aGlzdG9yeU5hdmlnYXRpb246CkBAIC0x
NDYxLDEwICsxNTA1LDE1IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmlzTG9jYXRpb25DaGFuZ2UoY29u
c3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24mIHJlZGlyZWN0aW9uKQogCiB2b2lkIEZyYW1lTG9hZGVy
OjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKGludCBzdGVwcykKIHsKKyAgICBtX2ZyYW1lLT5y
ZWRpcmVjdFNjaGVkdWxlcigpLT5zY2hlZHVsZUhpc3RvcnlOYXZpZ2F0aW9uKHN0ZXBzKTsKK30K
Kwordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQg
c3RlcHMpCit7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHNjaGVkdWxlUmVkaXJlY3Rpb24obmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHN0ZXBzKSk7
CisgICAgc2NoZWR1bGUobmV3IFNjaGVkdWxlZFJlZGlyZWN0aW9uKHN0ZXBzKSk7CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXI6OmdvQmFja09yRm9yd2FyZChpbnQgZGlzdGFuY2UpCkBAIC0xNDk3LDcg
KzE1NDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpnb0JhY2tPckZvcndhcmQoaW50IGRpc3RhbmNl
KQogICAgICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLCBGcmFtZUxvYWRUeXBlSW5kZXhlZEJhY2tG
b3J3YXJkKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6cmVkaXJlY3Rpb25UaW1lckZpcmVkKFRp
bWVyPEZyYW1lTG9hZGVyPiopCit2b2lkIFJlZGlyZWN0U2NoZWR1bGVyOjp0aW1lckZpcmVkKFRp
bWVyPFJlZGlyZWN0U2NoZWR1bGVyPiopCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7
CiAKQEAgLTE1MDUsMjMgKzE1NTQsMjQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVkaXJlY3Rpb25U
aW1lckZpcmVkKFRpbWVyPEZyYW1lTG9hZGVyPiopCiAgICAgICAgIHJldHVybjsKIAogICAgIE93
blB0cjxTY2hlZHVsZWRSZWRpcmVjdGlvbj4gcmVkaXJlY3Rpb24obV9zY2hlZHVsZWRSZWRpcmVj
dGlvbi5yZWxlYXNlKCkpOworICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2Fk
ZXIoKTsKIAogICAgIHN3aXRjaCAocmVkaXJlY3Rpb24tPnR5cGUpIHsKICAgICAgICAgY2FzZSBT
Y2hlZHVsZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb246CiAgICAgICAgIGNhc2UgU2NoZWR1bGVk
UmVkaXJlY3Rpb246OmxvY2F0aW9uQ2hhbmdlOgotICAgICAgICAgICAgY2hhbmdlTG9jYXRpb24o
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlZGlyZWN0aW9uLT51cmwpLCByZWRpcmVjdGlvbi0+cmVm
ZXJyZXIsCisgICAgICAgICAgICBsb2FkZXItPmNoYW5nZUxvY2F0aW9uKEtVUkwoUGFyc2VkVVJM
U3RyaW5nLCByZWRpcmVjdGlvbi0+dXJsKSwgcmVkaXJlY3Rpb24tPnJlZmVycmVyLAogICAgICAg
ICAgICAgICAgIHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9yeSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNr
Rm9yd2FyZExpc3QsIHJlZGlyZWN0aW9uLT53YXNVc2VyR2VzdHVyZSwgcmVkaXJlY3Rpb24tPndh
c1JlZnJlc2gpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNjaGVkdWxlZFJl
ZGlyZWN0aW9uOjpoaXN0b3J5TmF2aWdhdGlvbjoKICAgICAgICAgICAgIGlmIChyZWRpcmVjdGlv
bi0+aGlzdG9yeVN0ZXBzID09IDApIHsKICAgICAgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2Ug
Zm9yIGdvKDApIGZyb20gYSBmcmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUKLSAgICAgICAg
ICAgICAgICB1cmxTZWxlY3RlZChtX1VSTCwgIiIsIDAsIHJlZGlyZWN0aW9uLT5sb2NrSGlzdG9y
eSwgcmVkaXJlY3Rpb24tPmxvY2tCYWNrRm9yd2FyZExpc3QsIHJlZGlyZWN0aW9uLT53YXNVc2Vy
R2VzdHVyZSk7CisgICAgICAgICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVy
bCgpLCAiIiwgMCwgcmVkaXJlY3Rpb24tPmxvY2tIaXN0b3J5LCByZWRpcmVjdGlvbi0+bG9ja0Jh
Y2tGb3J3YXJkTGlzdCwgcmVkaXJlY3Rpb24tPndhc1VzZXJHZXN0dXJlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBnbyhpIT0wKSBmcm9t
IGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9ubHksCiAg
ICAgICAgICAgICAvLyBpbiBib3RoIElFIGFuZCBOUyAoYnV0IG5vdCBpbiBNb3ppbGxhKS4gV2Ug
Y2FuJ3QgZWFzaWx5IGRvIHRoYXQuCi0gICAgICAgICAgICBpZiAoY2FuR29CYWNrT3JGb3J3YXJk
KHJlZGlyZWN0aW9uLT5oaXN0b3J5U3RlcHMpKQotICAgICAgICAgICAgICAgIGdvQmFja09yRm9y
d2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBzKTsKKyAgICAgICAgICAgIGlmIChsb2FkZXIt
PmNhbkdvQmFja09yRm9yd2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBzKSkKKyAgICAgICAg
ICAgICAgICBsb2FkZXItPmdvQmFja09yRm9yd2FyZChyZWRpcmVjdGlvbi0+aGlzdG9yeVN0ZXBz
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBTY2hlZHVsZWRSZWRpcmVjdGlv
bjo6Zm9ybVN1Ym1pc3Npb246CiAgICAgICAgICAgICAvLyBUaGUgc3VibWl0Rm9ybSBmdW5jdGlv
biB3aWxsIGZpbmQgYSB0YXJnZXQgZnJhbWUgYmVmb3JlIHVzaW5nIHRoZSByZWRpcmVjdGlvbiB0
aW1lci4KQEAgLTE1MzAsNyArMTU4MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlZGlyZWN0aW9u
VGltZXJGaXJlZChUaW1lcjxGcmFtZUxvYWRlcj4qKQogICAgICAgICAgICAgLy8gd2l0aG91dCBs
ZWF2aW5nIGEgdGltZSB3aW5kb3cuIElmIHdlIGZhaWwgdGhlIGNoZWNrIGp1c3Qgc2lsZW50bHkg
ZHJvcCB0aGUgZm9ybSBzdWJtaXNzaW9uLgogICAgICAgICAgICAgaWYgKCFyZWRpcmVjdGlvbi0+
Zm9ybVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+c2hvdWxkQWxsb3dOYXZpZ2F0aW9u
KG1fZnJhbWUpKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGxvYWRGcmFt
ZVJlcXVlc3QocmVkaXJlY3Rpb24tPmZyYW1lUmVxdWVzdCwgcmVkaXJlY3Rpb24tPmxvY2tIaXN0
b3J5LCByZWRpcmVjdGlvbi0+bG9ja0JhY2tGb3J3YXJkTGlzdCwKKyAgICAgICAgICAgIGxvYWRl
ci0+bG9hZEZyYW1lUmVxdWVzdChyZWRpcmVjdGlvbi0+ZnJhbWVSZXF1ZXN0LCByZWRpcmVjdGlv
bi0+bG9ja0hpc3RvcnksIHJlZGlyZWN0aW9uLT5sb2NrQmFja0ZvcndhcmRMaXN0LAogICAgICAg
ICAgICAgICAgIHJlZGlyZWN0aW9uLT5ldmVudCwgcmVkaXJlY3Rpb24tPmZvcm1TdGF0ZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgyMiw3ICsxODcyLDcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6aGFuZGxlRmFsbGJhY2tDb250ZW50KCkKIHZvaWQgRnJhbWVMb2FkZXI6OnByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQoKQogeyAgICAKICAgICBtX2ZpcnN0TGF5b3V0RG9uZSA9IGZhbHNl
OwotICAgIGNhbmNlbFJlZGlyZWN0aW9uKHRydWUpOworICAgIG1fZnJhbWUtPnJlZGlyZWN0U2No
ZWR1bGVyKCktPmNhbmNlbCh0cnVlKTsKICAgICBtX2NsaWVudC0+cHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCgpOwogfQogCkBAIC0yMTA5LDcgKzIxNTksNyBAQCBwcml2YXRlOgogICAgIAogICAgIFJl
ZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKIH07Ci0gICAgCisKIC8vIFRoaXMgZG9lcyB0aGUg
c2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMsIGV4Y2VwdCBpdCByZWxpZXMg
b24gdGhlIGZhY3QKIC8vIHRoYXQgYSBoaWdoZXIgbGV2ZWwgYWxyZWFkeSBjaGVja2VkIHRoYXQg
dGhlIFVSTHMgbWF0Y2ggYW5kIHRoZSBzY3JvbGxpbmcgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRv
Lgogdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xsVG9BbmNob3IoY29uc3QgS1VSTCYgdXJsKQpAQCAt
MjEzOSw0MCArMjE4OSw0MyBAQCBib29sIEZyYW1lTG9hZGVyOjppc0NvbXBsZXRlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9pc0NvbXBsZXRlOwogfQogCi12b2lkIEZyYW1lTG9hZGVyOjpzY2hlZHVs
ZVJlZGlyZWN0aW9uKFBhc3NPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+IHJlZGlyZWN0aW9u
KQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6c2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWRS
ZWRpcmVjdGlvbj4gcmVkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUtPnBhZ2UoKSk7
CisgICAgRnJhbWVMb2FkZXIqIGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwogCiAgICAgLy8g
SWYgYSByZWRpcmVjdCB3YXMgc2NoZWR1bGVkIGR1cmluZyBhIGxvYWQsIHRoZW4gc3RvcCB0aGUg
Y3VycmVudCBsb2FkLgogICAgIC8vIE90aGVyd2lzZSB3aGVuIHRoZSBjdXJyZW50IGxvYWQgdHJh
bnNpdGlvbnMgZnJvbSBhIHByb3Zpc2lvbmFsIHRvIGEgCiAgICAgLy8gY29tbWl0dGVkIHN0YXRl
LCBwZW5kaW5nIHJlZGlyZWN0cyBtYXkgYmUgY2FuY2VsbGVkLiAKICAgICBpZiAocmVkaXJlY3Rp
b24tPndhc0R1cmluZ0xvYWQpIHsKLSAgICAgICAgaWYgKG1fcHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcikKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRp
bmcoKTsKLSAgICAgICAgc3RvcExvYWRpbmcoVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdl
SGlkZSk7ICAgCisgICAgICAgIGlmIChEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlciA9IGxvYWRlci0+cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKQorICAgICAgICAg
ICAgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAgbG9h
ZGVyLT5zdG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlKTsgICAK
ICAgICB9CiAKLSAgICBzdG9wUmVkaXJlY3Rpb25UaW1lcigpOworICAgIGNhbmNlbCgpOwogICAg
IG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gPSByZWRpcmVjdGlvbjsKLSAgICBpZiAoIW1faXNDb21w
bGV0ZSAmJiBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50eXBlICE9IFNjaGVkdWxlZFJlZGlyZWN0
aW9uOjpyZWRpcmVjdGlvbikKLSAgICAgICAgY29tcGxldGVkKCk7Ci0gICAgc3RhcnRSZWRpcmVj
dGlvblRpbWVyKCk7CisgICAgaWYgKCFsb2FkZXItPmlzQ29tcGxldGUoKSAmJiBtX3NjaGVkdWxl
ZFJlZGlyZWN0aW9uLT50eXBlICE9IFNjaGVkdWxlZFJlZGlyZWN0aW9uOjpyZWRpcmVjdGlvbikK
KyAgICAgICAgbG9hZGVyLT5jb21wbGV0ZWQoKTsKKyAgICBzdGFydFRpbWVyKCk7CiB9CiAKLXZv
aWQgRnJhbWVMb2FkZXI6OnN0YXJ0UmVkaXJlY3Rpb25UaW1lcigpCit2b2lkIFJlZGlyZWN0U2No
ZWR1bGVyOjpzdGFydFRpbWVyKCkKIHsKICAgICBpZiAoIW1fc2NoZWR1bGVkUmVkaXJlY3Rpb24p
CiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOworICAgIAor
ICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKIAotICAgIGlmICht
X3JlZGlyZWN0aW9uVGltZXIuaXNBY3RpdmUoKSkKKyAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dHlw
ZSA9PSBTY2hlZHVsZWRSZWRpcmVjdGlvbjo6cmVkaXJlY3Rpb24gJiYgIWFsbEFuY2VzdG9yc0Fy
ZUNvbXBsZXRlKCkpCisgICAgaWYgKG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnR5cGUgPT0gU2No
ZWR1bGVkUmVkaXJlY3Rpb246OnJlZGlyZWN0aW9uICYmICFsb2FkZXItPmFsbEFuY2VzdG9yc0Fy
ZUNvbXBsZXRlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVkaXJlY3Rpb25UaW1lci5z
dGFydE9uZVNob3QobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXkpOworICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmRlbGF5KTsKIAogICAgIHN3aXRj
aCAobV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+dHlwZSkgewogICAgICAgICBjYXNlIFNjaGVkdWxl
ZFJlZGlyZWN0aW9uOjpsb2NhdGlvbkNoYW5nZToKQEAgLTIxODAsOSArMjIzMyw5IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnN0YXJ0UmVkaXJlY3Rpb25UaW1lcigpCiAgICAgICAgICAgICBpZiAobV9z
Y2hlZHVsZWRSZWRpcmVjdGlvbi0+dG9sZENsaWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBtX3NjaGVkdWxlZFJlZGlyZWN0aW9uLT50b2xkQ2xpZW50ID0gdHJ1ZTsK
LSAgICAgICAgICAgIGNsaWVudFJlZGlyZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fc2No
ZWR1bGVkUmVkaXJlY3Rpb24tPnVybCksCisgICAgICAgICAgICBsb2FkZXItPmNsaWVudFJlZGly
ZWN0ZWQoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPnVybCks
CiAgICAgICAgICAgICAgICAgbV9zY2hlZHVsZWRSZWRpcmVjdGlvbi0+ZGVsYXksCi0gICAgICAg
ICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fcmVkaXJlY3Rpb25UaW1lci5uZXh0RmlyZUludGVy
dmFsKCksCisgICAgICAgICAgICAgICAgY3VycmVudFRpbWUoKSArIG1fdGltZXIubmV4dEZpcmVJ
bnRlcnZhbCgpLAogICAgICAgICAgICAgICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24tPmxvY2tC
YWNrRm9yd2FyZExpc3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFNjaGVk
dWxlZFJlZGlyZWN0aW9uOjpmb3JtU3VibWlzc2lvbjoKQEAgLTIxOTcsMjAgKzIyNTAsMjAgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6c3RhcnRSZWRpcmVjdGlvblRpbWVyKCkKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6c3RvcFJlZGlyZWN0aW9uVGltZXIo
KQordm9pZCBSZWRpcmVjdFNjaGVkdWxlcjo6Y2FuY2VsKGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3Mp
CiB7Ci0gICAgbV9yZWRpcmVjdGlvblRpbWVyLnN0b3AoKTsKKyAgICBtX3RpbWVyLnN0b3AoKTsK
IAogICAgIE93blB0cjxTY2hlZHVsZWRSZWRpcmVjdGlvbj4gcmVkaXJlY3Rpb24obV9zY2hlZHVs
ZWRSZWRpcmVjdGlvbi5yZWxlYXNlKCkpOwogICAgIGlmIChyZWRpcmVjdGlvbiAmJiByZWRpcmVj
dGlvbi0+dG9sZENsaWVudCkKLSAgICAgICAgY2xpZW50UmVkaXJlY3RDYW5jZWxsZWRPckZpbmlz
aGVkKG1fY2FuY2VsbGluZ1dpdGhMb2FkSW5Qcm9ncmVzcyk7CisgICAgICAgIG1fZnJhbWUtPmxv
YWRlcigpLT5jbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQobmV3TG9hZEluUHJvZ3Jl
c3MpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb21wbGV0ZWQoKQogewogICAgIFJlZlB0cjxG
cmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUt
PnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0
U2libGluZygpKQotICAgICAgICBjaGlsZC0+bG9hZGVyKCktPnN0YXJ0UmVkaXJlY3Rpb25UaW1l
cigpOworICAgICAgICBjaGlsZC0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c3RhcnRUaW1lcigpOwog
ICAgIGlmIChGcmFtZSogcGFyZW50ID0gbV9mcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkKICAgICAg
ICAgcGFyZW50LT5sb2FkZXIoKS0+Y2hlY2tDb21wbGV0ZWQoKTsKICAgICBpZiAobV9mcmFtZS0+
dmlldygpKQpAQCAtMzEzMCw3ICszMTgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNo
ZWRQYWdlJiBjYWNoZWRQYWdlKQogICAgIEFTU0VSVChtX2ZyYW1lLT5wYWdlKCkpOwogICAgIEFT
U0VSVChtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpID09IG1fZnJhbWUpOwogCi0gICAgY2Fu
Y2VsUmVkaXJlY3Rpb24oKTsKKyAgICBtX2ZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigpLT5jYW5j
ZWwoKTsKIAogICAgIC8vIFdlIHN0aWxsIGhhdmUgdG8gY2xvc2UgdGhlIHByZXZpb3VzIHBhcnQg
cGFnZS4KICAgICBjbG9zZVVSTCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggNGI0OTU5Yi4uYzMx
YWZlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0xMTIsNiArMTEyLDM3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCogbV9hcmd1bWVudDsKICAgICB9OwogCisgICAgY2xhc3Mg
UmVkaXJlY3RTY2hlZHVsZXIgOiBwdWJsaWMgTm9uY29weWFibGUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgUmVkaXJlY3RTY2hlZHVsZXIoRnJhbWUqKTsKKyAgICAgICAgLy8gV2UgbmVlZCBhbiBl
eHBsaWNpdCBkdG9yIGJlY2F1c2UgU2NoZWR1bGVkUmVkaXJlY3Rpb24gaXMgYW4gaW5jb21wbGV0
ZSB0eXBlIGhlcmUuCisgICAgICAgIH5SZWRpcmVjdFNjaGVkdWxlcigpOworCisgICAgICAgIGJv
b2wgcmVkaXJlY3RTY2hlZHVsZWREdXJpbmdMb2FkKCk7CisgICAgICAgIGJvb2wgbG9jYXRpb25D
aGFuZ2VQZW5kaW5nKCk7CisKKyAgICAgICAgdm9pZCBzY2hlZHVsZVJlZGlyZWN0KGRvdWJsZSBk
ZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgICAgICB2b2lkIHNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9j
a0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB3YXNVc2VyR2VzdHVyZSk7
CisgICAgICAgIHZvaWQgc2NoZWR1bGVGb3JtU3VibWlzc2lvbihjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiwgYm9vbCBsb2NrSGlzdG9yeSwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPik7CisgICAgICAgIHZvaWQgc2NoZWR1bGVSZWZyZXNoKGJvb2wgd2FzVXNlckdlc3R1
cmUpOworICAgICAgICB2b2lkIHNjaGVkdWxlSGlzdG9yeU5hdmlnYXRpb24oaW50IHN0ZXBzKTsK
KworICAgICAgICB2b2lkIHN0YXJ0VGltZXIoKTsKKworICAgICAgICB2b2lkIGNhbmNlbChib29s
IG5ld0xvYWRJblByb2dyZXNzID0gZmFsc2UpOworICAgICAgICB2b2lkIGNsZWFyKCk7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8UmVkaXJlY3RTY2hlZHVs
ZXI+Kik7CisgICAgICAgIHZvaWQgc2NoZWR1bGUoUGFzc093blB0cjxTY2hlZHVsZWRSZWRpcmVj
dGlvbj4gcmVkaXJlY3Rpb24pOworCisgICAgICAgIHN0YXRpYyBib29sIG11c3RMb2NrQmFja0Zv
cndhcmRMaXN0KEZyYW1lKiB0YXJnZXRGcmFtZSk7CisKKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7
CisgICAgICAgIFRpbWVyPFJlZGlyZWN0U2NoZWR1bGVyPiBtX3RpbWVyOworICAgICAgICBPd25Q
dHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+IG1fc2NoZWR1bGVkUmVkaXJlY3Rpb247CisgICAgfTsK
KwogICAgIGNsYXNzIEZyYW1lTG9hZGVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIEZyYW1lTG9hZGVyKEZyYW1lKiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKQEAg
LTI3Miw3ICszMDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgS1VSTCBiYXNl
VVJMKCkgY29uc3Q7CiAKLSAgICAgICAgYm9vbCBpc1NjaGVkdWxlZExvY2F0aW9uQ2hhbmdlUGVu
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gJiYgaXNMb2NhdGlv
bkNoYW5nZSgqbV9zY2hlZHVsZWRSZWRpcmVjdGlvbik7IH0KKyAgICAgICAgYm9vbCBpc1NjaGVk
dWxlZExvY2F0aW9uQ2hhbmdlUGVuZGluZygpIGNvbnN0OwogICAgICAgICB2b2lkIHNjaGVkdWxl
SFRUUFJlZGlyZWN0aW9uKGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgICAg
ICB2b2lkIHNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIGJvb2wgbG9ja0hpc3RvcnkgPSB0cnVlLCBib29sIGxvY2tCYWNrRm9y
d2FyZExpc3QgPSB0cnVlLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwogICAgICAgICB2b2lk
IHNjaGVkdWxlUmVmcmVzaChib29sIHVzZXJHZXN0dXJlID0gZmFsc2UpOwpAQCAtMzcwLDYgKzQw
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIGJvb2wgYWxsb3dTdWJz
dGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKTsKIAogICAgICAgICBib29sIGNvbW1pdHRpbmdGaXJz
dFJlYWxMb2FkKCkgY29uc3QgeyByZXR1cm4gIW1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCAmJiAhbV9jb21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQ7IH0KKyAgICAgICAgYm9vbCBj
b21taXR0ZWRGaXJzdFJlYWxEb2N1bWVudExvYWQoKSBjb25zdCB7IHJldHVybiBtX2NvbW1pdHRl
ZEZpcnN0UmVhbERvY3VtZW50TG9hZDsgfQogCiAgICAgICAgIHZvaWQgaWNvbkxvYWREZWNpc2lv
bkF2YWlsYWJsZSgpOwogCkBAIC0zODQsNiArNDE2LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIG9wZW4oQ2FjaGVkRnJhbWVCYXNlJik7CiAKKyAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB0aGVzZSByZWFsbHkgYmUgcHVibGljPworICAgICAgICB2b2lkIGNvbXBsZXRl
ZCgpOworICAgICAgICBib29sIGFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCkgY29uc3Q7IC8vIGlu
Y2x1ZGluZyB0aGlzCisgICAgICAgIGJvb2wgYWxsQ2hpbGRyZW5BcmVDb21wbGV0ZSgpIGNvbnN0
OyAvLyBpbW1lZGlhdGUgY2hpbGRyZW4sIG5vdCBhbGwgZGVzY2VuZGFudHMKKyAgICAgICAgdm9p
ZCBjbGllbnRSZWRpcmVjdGVkKGNvbnN0IEtVUkwmLCBkb3VibGUgZGVsYXksIGRvdWJsZSBmaXJl
RGF0ZSwgYm9vbCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICAgICAgdm9pZCBjbGllbnRSZWRp
cmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9vbCBjYW5jZWxXaXRoTG9hZEluUHJvZ3Jlc3MpOwor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gY3JlYXRlSGlz
dG9yeUl0ZW0oYm9vbCB1c2VPcmlnaW5hbCk7CiAgICAgICAgIFBhc3NSZWZQdHI8SGlzdG9yeUl0
ZW0+IGNyZWF0ZUhpc3RvcnlJdGVtVHJlZShGcmFtZSogdGFyZ2V0RnJhbWUsIGJvb2wgY2xpcEF0
VGFyZ2V0KTsKQEAgLTQxMCwxNiArNDQ5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCB1cGRhdGVIaXN0b3J5Rm9yQ2xpZW50UmVkaXJlY3QoKTsKICAgICAgICAgdm9pZCB1
cGRhdGVIaXN0b3J5Rm9yQ29tbWl0KCk7CiAgICAgICAgIHZvaWQgdXBkYXRlSGlzdG9yeUZvckFu
Y2hvclNjcm9sbCgpOwotICAgIAotICAgICAgICB2b2lkIHJlZGlyZWN0aW9uVGltZXJGaXJlZChU
aW1lcjxGcmFtZUxvYWRlcj4qKTsKKwogICAgICAgICB2b2lkIGNoZWNrVGltZXJGaXJlZChUaW1l
cjxGcmFtZUxvYWRlcj4qKTsKLSAgICAgICAgCi0gICAgICAgIHZvaWQgY2FuY2VsUmVkaXJlY3Rp
b24oYm9vbCBuZXdMb2FkSW5Qcm9ncmVzcyA9IGZhbHNlKTsKIAogICAgICAgICB2b2lkIHN0YXJ0
ZWQoKTsKIAotICAgICAgICB2b2lkIGNvbXBsZXRlZCgpOwotCiAgICAgICAgIGJvb2wgc2hvdWxk
VXNlUGx1Z2luKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGhhc0Zh
bGxiYWNrLCBib29sJiB1c2VGYWxsYmFjayk7CiAgICAgICAgIGJvb2wgbG9hZFBsdWdpbihSZW5k
ZXJQYXJ0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsCiAgICAgICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFy
YW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spOwpAQCAtNDg0LDEwICs1MTgsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc2hvdWxkUmVsb2FkVG9IYW5kbGVVbnJlYWNoYWJs
ZVVSTChEb2N1bWVudExvYWRlciopOwogICAgICAgICB2b2lkIGhhbmRsZVVuaW1wbGVtZW50YWJs
ZVBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICAgICAgdm9pZCBzY2hlZHVsZVJl
ZGlyZWN0aW9uKFBhc3NPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+KTsKLSAgICAgICAgdm9p
ZCBzdGFydFJlZGlyZWN0aW9uVGltZXIoKTsKLSAgICAgICAgdm9pZCBzdG9wUmVkaXJlY3Rpb25U
aW1lcigpOwotCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAg
IHZvaWQgZGlzcGF0Y2hBc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwpAQCAtNDk1LDcgKzUyNSw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3Ro
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgbGVuZ3RoKTsK
ICAgICAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogCi0gICAgICAgIHN0YXRpYyBib29sIGlzTG9jYXRp
b25DaGFuZ2UoY29uc3QgU2NoZWR1bGVkUmVkaXJlY3Rpb24mKTsKICAgICAgICAgdm9pZCBzY2hl
ZHVsZUZvcm1TdWJtaXNzaW9uKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBib29sIGxvY2tIaXN0
b3J5LCBQYXNzUmVmUHRyPEV2ZW50PiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+KTsKIAogICAgICAg
ICB2b2lkIGxvYWRXaXRoRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqLCBGcmFtZUxvYWRU
eXBlLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pOyAvLyBDYWxscyBjb250aW51ZUxvYWRBZnRlck5h
dmlnYXRpb25Qb2xpY3kKQEAgLTUwOSw4ICs1MzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgbG9hZFVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsICAgICAgICAgIC8vIENhbGxlZCBieSBsb2FkRnJhbWVS
ZXF1ZXN0LCBjYWxscyBsb2FkV2l0aE5hdmlnYXRpb25BY3Rpb24gb3IgZGlzcGF0Y2hlcyB0byBu
YXZpZ2F0aW9uIHBvbGljeSBkZWxlZ2F0ZQogICAgICAgICAgICAgYm9vbCBsb2NrSGlzdG9yeSwg
RnJhbWVMb2FkVHlwZSwgUGFzc1JlZlB0cjxFdmVudD4sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPik7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAKLSAgICAgICAgdm9pZCBjbGllbnRSZWRpcmVjdENhbmNlbGxlZE9yRmluaXNoZWQoYm9vbCBj
YW5jZWxXaXRoTG9hZEluUHJvZ3Jlc3MpOwotICAgICAgICB2b2lkIGNsaWVudFJlZGlyZWN0ZWQo
Y29uc3QgS1VSTCYsIGRvdWJsZSBkZWxheSwgZG91YmxlIGZpcmVEYXRlLCBib29sIGxvY2tCYWNr
Rm9yd2FyZExpc3QpOwogICAgICAgICBib29sIHNob3VsZFJlbG9hZChjb25zdCBLVVJMJiBjdXJy
ZW50VVJMLCBjb25zdCBLVVJMJiBkZXN0aW5hdGlvblVSTCk7CiAKICAgICAgICAgdm9pZCBzZW5k
UmVtYWluaW5nRGVsZWdhdGVNZXNzYWdlcyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CkBA
IC01NDUsOSArNTcyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2F2
ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKik7CiAKLSAgICAg
ICAgYm9vbCBhbGxBbmNlc3RvcnNBcmVDb21wbGV0ZSgpIGNvbnN0OyAvLyBpbmNsdWRpbmcgdGhp
cwotICAgICAgICBib29sIGFsbENoaWxkcmVuQXJlQ29tcGxldGUoKSBjb25zdDsgLy8gaW1tZWRp
YXRlIGNoaWxkcmVuLCBub3QgYWxsIGRlc2NlbmRhbnRzCi0KICAgICAgICAgRnJhbWUqIG1fZnJh
bWU7CiAgICAgICAgIEZyYW1lTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKIApAQCAtNTk4LDggKzYy
Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fY2FuY2VsbGluZ1dp
dGhMb2FkSW5Qcm9ncmVzczsKIAotICAgICAgICBPd25QdHI8U2NoZWR1bGVkUmVkaXJlY3Rpb24+
IG1fc2NoZWR1bGVkUmVkaXJlY3Rpb247Ci0KICAgICAgICAgYm9vbCBtX25lZWRzQ2xlYXI7CiAg
ICAgICAgIGJvb2wgbV9yZWNlaXZlZERhdGE7CiAKQEAgLTYxMCw4ICs2MzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9jb250YWluc1BsdWdJbnM7CiAKICAgICAgICAg
S1VSTCBtX3N1Ym1pdHRlZEZvcm1VUkw7Ci0gICAgCi0gICAgICAgIFRpbWVyPEZyYW1lTG9hZGVy
PiBtX3JlZGlyZWN0aW9uVGltZXI7CisKICAgICAgICAgVGltZXI8RnJhbWVMb2FkZXI+IG1fY2hl
Y2tUaW1lcjsKICAgICAgICAgYm9vbCBtX3Nob3VsZENhbGxDaGVja0NvbXBsZXRlZDsKICAgICAg
ICAgYm9vbCBtX3Nob3VsZENhbGxDaGVja0xvYWRDb21wbGV0ZTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGU4ZTc5NmYu
LmJlNjQzOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTIzLDYgKzEyMyw3IEBAIEZyYW1lOjpGcmFtZShQYWdlKiBw
YWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGll
bnQqCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fdHJlZU5vZGUodGhpcywgcGFyZW50RnJv
bU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpKQogICAgICwgbV9sb2FkZXIodGhpcywgZnJhbWVM
b2FkZXJDbGllbnQpCisgICAgLCBtX3JlZGlyZWN0U2NoZWR1bGVyKHRoaXMpCiAgICAgLCBtX293
bmVyRWxlbWVudChvd25lckVsZW1lbnQpCiAgICAgLCBtX3NjcmlwdCh0aGlzKQogICAgICwgbV9z
ZWxlY3Rpb25HcmFudWxhcml0eShDaGFyYWN0ZXJHcmFudWxhcml0eSkKQEAgLTIyMCw2ICsyMjEs
MTEgQEAgRnJhbWVMb2FkZXIqIEZyYW1lOjpsb2FkZXIoKSBjb25zdAogICAgIHJldHVybiAmbV9s
b2FkZXI7CiB9CiAKK1JlZGlyZWN0U2NoZWR1bGVyKiBGcmFtZTo6cmVkaXJlY3RTY2hlZHVsZXIo
KSBjb25zdAoreworICAgIHJldHVybiAmbV9yZWRpcmVjdFNjaGVkdWxlcjsKK30KKwogRnJhbWVW
aWV3KiBGcmFtZTo6dmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmlldy5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5k
ZXggYjk4ZGJjNC4uNjIwOGJiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysr
IGIvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY3LDYgKzY3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIEVkaXRvcjsKICAgICBjbGFzcyBFdmVudEhhbmRsZXI7CiAgICAgY2xh
c3MgRnJhbWVMb2FkZXI7CisgICAgY2xhc3MgUmVkaXJlY3RTY2hlZHVsZXI7CiAgICAgY2xhc3Mg
RnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgY2xhc3MgRnJhbWVUcmVlOwogICAgIGNsYXNzIEZyYW1l
VmlldzsKQEAgLTExMCw2ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEVk
aXRvciogZWRpdG9yKCkgY29uc3Q7CiAgICAgICAgIEV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVy
KCkgY29uc3Q7CiAgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIoKSBjb25zdDsKKyAgICAgICAg
UmVkaXJlY3RTY2hlZHVsZXIqIHJlZGlyZWN0U2NoZWR1bGVyKCkgY29uc3Q7CiAgICAgICAgIFNl
bGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbigpIGNvbnN0OwogICAgICAgICBGcmFtZVRyZWUq
IHRyZWUoKSBjb25zdDsKICAgICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciogYW5pbWF0aW9uKCkg
Y29uc3Q7CkBAIC0zMzQsNiArMzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQ
YWdlKiBtX3BhZ2U7CiAgICAgICAgIG11dGFibGUgRnJhbWVUcmVlIG1fdHJlZU5vZGU7CiAgICAg
ICAgIG11dGFibGUgRnJhbWVMb2FkZXIgbV9sb2FkZXI7CisgICAgICAgIG11dGFibGUgUmVkaXJl
Y3RTY2hlZHVsZXIgbV9yZWRpcmVjdFNjaGVkdWxlcjsKIAogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxET01XaW5kb3c+IG1fZG9tV2luZG93OwogICAgICAgICBIYXNoU2V0PERPTVdpbmRvdyo+IG1f
bGl2ZUZvcm1lcldpbmRvd3M7
</data>
<flag name="review"
          id="21632"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>