<?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>118790</bug_id>
          
          <creation_ts>2013-07-17 04:25:04 -0700</creation_ts>
          <short_desc>[EFL][WK2] Move all the static methods into EWK2TextCheckerTest in test_ewk2_text_checker.cpp</short_desc>
          <delta_ts>2013-07-18 00:25:52 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>118698</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Donggwan Kim">donggwan.kim</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>909298</commentid>
    <comment_count>0</comment_count>
    <who name="Donggwan Kim">donggwan.kim</who>
    <bug_when>2013-07-17 04:25:04 -0700</bug_when>
    <thetext>All the static methods should be moved to EWK2TextCheckerTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909519</commentid>
    <comment_count>1</comment_count>
      <attachid>206930</attachid>
    <who name="Donggwan Kim">donggwan.kim</who>
    <bug_when>2013-07-17 17:20:00 -0700</bug_when>
    <thetext>Created attachment 206930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909605</commentid>
    <comment_count>2</comment_count>
      <attachid>206930</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-07-18 00:03:39 -0700</bug_when>
    <thetext>Comment on attachment 206930
Patch

Ok, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909619</commentid>
    <comment_count>3</comment_count>
      <attachid>206930</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-18 00:25:49 -0700</bug_when>
    <thetext>Comment on attachment 206930
Patch

Clearing flags on attachment: 206930

Committed r152831: &lt;http://trac.webkit.org/changeset/152831&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909621</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-18 00:25:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206930</attachid>
            <date>2013-07-17 17:20:00 -0700</date>
            <delta_ts>2013-07-18 00:25:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118790-20130717172003.patch</filename>
            <type>text/plain</type>
            <size>26096</size>
            <attacher name="Donggwan Kim">donggwan.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTJiMGRhOTAyNmUzOTI4
NThmZmQ1NDUwMzdlNDBhYWEwNWVlNTY0My4uZmZhMWJhNTlkNzExMzhjZmQwMGMxZWEzZDM1ZmMw
OTY2OTEzOWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTA3LTE3ICBEb25n
LUd3YW4gS2ltICA8ZG9uZ2d3YW4ua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdW1dL
Ml0gTW92ZSBhbGwgdGhlIHN0YXRpYyBtZXRob2RzIGludG8gRVdLMlRleHRDaGVja2VyVGVzdCBp
biB0ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4NzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWxsIHRoZSBzdGF0aWMgbWV0aG9kcyBzaG91bGQgYmUgbW92
ZWQgdG8gRVdLMlRleHRDaGVja2VyVGVzdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl90ZXh0X2NoZWNrZXIuY3BwOgorICAgICAgICAoRVdLMlRleHRDaGVj
a2VyVGVzdDo6cmVzZXRDYWxsYmFja3NFeGVjdXRpb25TdGF0cyk6CisgICAgICAgIChFV0syVGV4
dENoZWNrZXJUZXN0OjpvblRpbWVvdXQpOgorICAgICAgICAoRVdLMlRleHRDaGVja2VyVGVzdDo6
b25TZXR0aW5nQ2hhbmdlKToKKyAgICAgICAgKEVXSzJUZXh0Q2hlY2tlclRlc3Q6Om9uU3BlbGxE
b2N1bWVudFRhZyk6CisgICAgICAgIChFV0syVGV4dENoZWNrZXJUZXN0OjpvblNwZWxsRG9jdW1l
bnRUYWdDbG9zZSk6CisgICAgICAgIChFV0syVGV4dENoZWNrZXJUZXN0OjpvblNwZWxsaW5nQ2hl
Y2spOgorICAgICAgICAoRVdLMlRleHRDaGVja2VyVGVzdDo6b25TcGVsbGluZ0Zvcktub3duV29y
ZCk6CisgICAgICAgIChFV0syVGV4dENoZWNrZXJUZXN0OjpvbldvcmRHdWVzc2VzKToKKyAgICAg
ICAgKEVXSzJUZXh0Q2hlY2tlclRlc3Q6Om9uV29yZExlYXJuKToKKyAgICAgICAgKEVXSzJUZXh0
Q2hlY2tlclRlc3Q6Om9uV29yZElnbm9yZSk6CisgICAgICAgIChFV0syVGV4dENoZWNrZXJUZXN0
OjpmaW5kQ29udGV4dE1lbnVJdGVtKToKKyAgICAgICAgKEVXSzJUZXh0Q2hlY2tlclRlc3Q6OmNo
ZWNrQ29ycmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMpOgorICAgICAgICAoRVdLMlRleHRDaGVja2Vy
VGVzdDo6dG9vZ2xlQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKToKKyAgICAgICAgKEVXSzJUZXh0
Q2hlY2tlclRlc3Q6OmNoZWNrQ2xpZW50U3VnZ2VzdGlvbnNGb3JXb3JkKToKKyAgICAgICAgKEVX
SzJUZXh0Q2hlY2tlclRlc3Q6OnNlbGVjdExlYXJuU3BlbGxpbmcpOgorICAgICAgICAoRVdLMlRl
eHRDaGVja2VyVGVzdDo6c2VsZWN0SWdub3JlU3BlbGxpbmcpOgorICAgICAgICAoRVdLMlRleHRD
aGVja2VyVGVzdDo6Y291bnRDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKEVXSzJUZXh0Q2hl
Y2tlclRlc3Q6OmNsaWNrQnV0dG9uKToKKyAgICAgICAgKEVXSzJUZXh0Q2hlY2tlclRlc3Q6OnNo
b3dDb250ZXh0TWVudSk6CisgICAgICAgIChFV0syVGV4dENoZWNrZXJUZXN0OjpzZWxlY3RGaXJz
dFdvcmQpOgorCiAyMDEzLTA3LTE3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0
Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTUyNzAxLCByMTUyNzAz
LCByMTUyNzM5LCByMTUyNzU0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3RleHRfY2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcAppbmRl
eCBlZTU2OTBkZDY4MGNmODg4ZmZlNGNhZTk1ZTdhYjA5ZmZhNzIwNTZjLi42ZGNiODcwYzhhOTBl
YzY3OWNkZDE1NjdmY2U1YWE2ZmQ3MzQ1YzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdGV4dF9jaGVj
a2VyLmNwcApAQCAtNTQsNTEgKzU0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGNsaWVudFN1Z2dl
c3Rpb25zRm9yV29yZFtdID0geyAiY2xpZW50U3VnZ2VzdGlvbjEiLCAiY2xpZW50U3UKIHN0YXRp
YyB1bnNpZ25lZCBjb250ZXh0TWVudUl0ZW1zTnVtYmVyID0gMDsKIHN0YXRpYyBTdHJpbmcga25v
d25Xb3JkOwogCi1jbGFzcyBFV0syVGV4dENoZWNrZXJUZXN0IDogcHVibGljIEVXSzJVbml0VGVz
dEJhc2UgewotcHJvdGVjdGVkOgotICAgIGVudW0gTGluZSB7IEZpcnN0TGluZSwgU2Vjb25kTGlu
ZSB9OwotICAgIGVudW0gQnV0dG9uIHsgU2VsZWN0QWxsV29yZHNXaXRoU3BlbGxjaGVja0J1dHRv
biwgU2VsZWN0QWxsV29yZHNXaXRob3V0U3BlbGxjaGVja0J1dHRvbiwgU2VsZWN0U3ViV29yZFdp
dGhTcGVsbGNoZWNrQnV0dG9uIH07Ci0KLSAgICB2b2lkIGNsaWNrQnV0dG9uKEJ1dHRvbiBidXR0
b24pCi0gICAgewotICAgICAgICBzd2l0Y2ggKGJ1dHRvbikgewotICAgICAgICBjYXNlIFNlbGVj
dEFsbFdvcmRzV2l0aFNwZWxsY2hlY2tCdXR0b246Ci0gICAgICAgICAgICBtb3VzZUNsaWNrKDYw
LCA2MCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWxlY3RBbGxXb3Jkc1dp
dGhvdXRTcGVsbGNoZWNrQnV0dG9uOgotICAgICAgICAgICAgbW91c2VDbGljayg1MDAsIDYwKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNlbGVjdFN1YldvcmRXaXRoU3BlbGxj
aGVja0J1dHRvbiA6Ci0gICAgICAgICAgICBtb3VzZUNsaWNrKDIwMCwgNjApOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHNob3dDb250ZXh0TWVudShM
aW5lIGxpbmUpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGxpbmUpIHsKLSAgICAgICAgY2FzZSBG
aXJzdExpbmU6Ci0gICAgICAgICAgICBtb3VzZUNsaWNrKDEwLCAyMCwgMyk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTZWNvbmRMaW5lOgotICAgICAgICAgICAgbW91c2VDbGlj
aygzNSwgMzUsIDMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICB2b2lkIHNlbGVjdEZpcnN0V29yZChMaW5lIGxpbmUpCi0gICAgewotICAgICAgICBzd2l0Y2gg
KGxpbmUpIHsKLSAgICAgICAgY2FzZSBGaXJzdExpbmU6Ci0gICAgICAgICAgICBtb3VzZURvdWJs
ZUNsaWNrKDEwLCAyMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTZWNvbmRM
aW5lOgotICAgICAgICAgICAgbW91c2VEb3VibGVDbGljaygzNSwgMzUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCiAvKioKICAqIFN0cnVjdHVyZSBrZWVwcyBp
bmZvcm1hdGlvbiB3aGljaCBjYWxsYmFja3Mgd2VyZSBjYWxsZWQuCiAgKiBJdHMgdmFsdWVzIGFy
ZSByZXNldCBiZWZvcmUgZWFjaCB0ZXN0LgpAQCAtMTEzLDI4NyArNjgsMzMzIEBAIHN0YXRpYyBz
dHJ1Y3QgewogICAgIGJvb2wgd29yZElnbm9yZTsKIH0gY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHM7
CiAKLXN0YXRpYyB2b2lkIHJlc2V0Q2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMoKQotewotICAgIGNh
bGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSBmYWxzZTsKLSAgICBjYWxsYmFj
a3NFeGVjdXRpb25TdGF0cy5zcGVsbERvY3VtZW50VGFnID0gZmFsc2U7Ci0gICAgY2FsbGJhY2tz
RXhlY3V0aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZ0Nsb3NlID0gZmFsc2U7Ci0gICAgY2FsbGJh
Y2tzRXhlY3V0aW9uU3RhdHMuc3BlbGxpbmdDaGVjayA9IGZhbHNlOwotICAgIGNhbGxiYWNrc0V4
ZWN1dGlvblN0YXRzLndvcmRHdWVzc2VzID0gZmFsc2U7Ci0gICAgY2FsbGJhY2tzRXhlY3V0aW9u
U3RhdHMud29yZExlYXJuID0gZmFsc2U7Ci0gICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMud29y
ZElnbm9yZSA9IGZhbHNlOwotfQotCi0vKioKLSAqIEhhbmRsZSB0aGUgdGltZW91dCwgaXQgbWF5
IGhhcHBlbiBmb3IgdGhlIGFzeW5jaHJvbm91cyB0ZXN0cy4KLSAqCi0gKiBAaW50ZXJuYWwKLSAq
Ci0gKiBAcmV0dXJuIHRoZSBFQ09SRV9DQUxMQkFDS19DQU5DRUwgZmxhZyB0byBkZWxldGUgdGhl
IHRpbWVyIGF1dG9tYXRpY2FsbHkKLSAqLwotc3RhdGljIEVpbmFfQm9vbCBvblRpbWVvdXQodm9p
ZCopCi17Ci0gICAgZWNvcmVfbWFpbl9sb29wX3F1aXQoKTsKLSAgICByZXR1cm4gRUNPUkVfQ0FM
TEJBQ0tfQ0FOQ0VMOwotfQorY2xhc3MgRVdLMlRleHRDaGVja2VyVGVzdCA6IHB1YmxpYyBFV0sy
VW5pdFRlc3RCYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCByZXNldENhbGxiYWNrc0V4
ZWN1dGlvblN0YXRzKCkKKyAgICB7CisgICAgICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNl
dHRpbmdDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc3Bl
bGxEb2N1bWVudFRhZyA9IGZhbHNlOworICAgICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy5z
cGVsbERvY3VtZW50VGFnQ2xvc2UgPSBmYWxzZTsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9u
U3RhdHMuc3BlbGxpbmdDaGVjayA9IGZhbHNlOworICAgICAgICBjYWxsYmFja3NFeGVjdXRpb25T
dGF0cy53b3JkR3Vlc3NlcyA9IGZhbHNlOworICAgICAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0
cy53b3JkTGVhcm4gPSBmYWxzZTsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMud29y
ZElnbm9yZSA9IGZhbHNlOworICAgIH0KIAotLyoqCi0gKiBUaGlzIGNhbGxiYWNrIHRlc3RzIHdo
ZXRoZXIgdGhlIGNsaWVudCdzIGNhbGxiYWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBzcGVsbCBjaGVj
a2luZyBzZXR0aW5nIHdhcyBjaGFuZ2VkLgotICoKLSAqIEBpbnRlcm5hbAotICoKLSAqIFZlcmlm
eSB0aGUgbmV3IHNldHRpbmcgdmFsdWUgKHBhc3NlcyBpbiB0aGUgQGEgZmxhZyBwYXJhbWV0ZXIp
IGlmIGl0IGVxdWFscyB0byB0aGUgcHJldmlvdXNseSBzZXQuCi0gKgotICogQGludGVybmFsCi0g
KgotICogQHBhcmFtIGZsYWcgdGhlIG5ldyBzZXR0aW5nIHZhbHVlCi0gKi8KLXN0YXRpYyB2b2lk
IG9uU2V0dGluZ0NoYW5nZShFaW5hX0Jvb2wgZmxhZykKLXsKLSAgICBFWFBFQ1RfRVEoaXNTZXR0
aW5nRW5hYmxlZCwgZmxhZyk7Ci0gICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc2V0dGluZ0No
YW5nZSA9IHRydWU7Ci19CisgICAgLyoqCisgICAgICogSGFuZGxlIHRoZSB0aW1lb3V0LCBpdCBt
YXkgaGFwcGVuIGZvciB0aGUgYXN5bmNocm9ub3VzIHRlc3RzLgorICAgICAqCisgICAgICogQGlu
dGVybmFsCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBFQ09SRV9DQUxMQkFDS19DQU5DRUwg
ZmxhZyB0byBkZWxldGUgdGhlIHRpbWVyIGF1dG9tYXRpY2FsbHkKKyAgICAgKi8KKyAgICBzdGF0
aWMgRWluYV9Cb29sIG9uVGltZW91dCh2b2lkKikKKyAgICB7CisgICAgICAgIGVjb3JlX21haW5f
bG9vcF9xdWl0KCk7CisgICAgICAgIHJldHVybiBFQ09SRV9DQUxMQkFDS19DQU5DRUw7CisgICAg
fQogCi0vKioKLSAqIFJldHVybnMgdW5pcXVlIHRhZyAoYW4gaWRlbnRpZmllcikuCi0gKgotICog
QGludGVybmFsCi0gKgotICogSXQgd2lsbCBiZSB1c2VkIGZvciBvblNwZWxsaW5nQ2hlY2ssIG9u
V29yZEd1ZXNzZXMgZXRjLiB0byBub3RpZnkKLSAqIHRoZSBjbGllbnQgb24gd2hpY2ggb2JqZWN0
IChhc3NvY2lhdGVkIHRvIHRoZSB0YWcpIHRoZSBzcGVsbGluZyBpcyBiZWluZyBpbnZva2VkLgot
ICoKLSAqIEBwYXJhbSBld2tWaWV3IHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdW5pcXVlIHRhZwot
ICoKLSAqIEByZXR1cm4gdW5pcXVlIHRhZyBmb3IgdGhlIGdpdmVuIEBhIGV3a1ZpZXcgb2JqZWN0
Ci0gKi8KLXN0YXRpYyB1aW50NjRfdCBvblNwZWxsRG9jdW1lbnRUYWcoY29uc3QgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCi17Ci0gICAgRVhQRUNUX0VRKGRlZmF1bHRWaWV3LCBld2tWaWV3KTsKLSAg
ICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy5zcGVsbERvY3VtZW50VGFnID0gdHJ1ZTsKKyAgICAv
KioKKyAgICAgKiBUaGlzIGNhbGxiYWNrIHRlc3RzIHdoZXRoZXIgdGhlIGNsaWVudCdzIGNhbGxi
YWNrIGlzIGNhbGxlZCB3aGVuIHRoZSBzcGVsbCBjaGVja2luZyBzZXR0aW5nIHdhcyBjaGFuZ2Vk
LgorICAgICAqCisgICAgICogQGludGVybmFsCisgICAgICoKKyAgICAgKiBWZXJpZnkgdGhlIG5l
dyBzZXR0aW5nIHZhbHVlIChwYXNzZXMgaW4gdGhlIEBhIGZsYWcgcGFyYW1ldGVyKSBpZiBpdCBl
cXVhbHMgdG8gdGhlIHByZXZpb3VzbHkgc2V0LgorICAgICAqCisgICAgICogQGludGVybmFsCisg
ICAgICoKKyAgICAgKiBAcGFyYW0gZmxhZyB0aGUgbmV3IHNldHRpbmcgdmFsdWUKKyAgICAgKi8K
KyAgICBzdGF0aWMgdm9pZCBvblNldHRpbmdDaGFuZ2UoRWluYV9Cb29sIGZsYWcpCisgICAgewor
ICAgICAgICBFWFBFQ1RfRVEoaXNTZXR0aW5nRW5hYmxlZCwgZmxhZyk7CisgICAgICAgIGNhbGxi
YWNrc0V4ZWN1dGlvblN0YXRzLnNldHRpbmdDaGFuZ2UgPSB0cnVlOworICAgIH0KIAotICAgIHJl
dHVybiBkZWZhdWx0RG9jdW1lbnRUYWc7Ci19CisgICAgLyoqCisgICAgICogUmV0dXJucyB1bmlx
dWUgdGFnIChhbiBpZGVudGlmaWVyKS4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAq
CisgICAgICogSXQgd2lsbCBiZSB1c2VkIGZvciBvblNwZWxsaW5nQ2hlY2ssIG9uV29yZEd1ZXNz
ZXMgZXRjLiB0byBub3RpZnkKKyAgICAgKiB0aGUgY2xpZW50IG9uIHdoaWNoIG9iamVjdCAoYXNz
b2NpYXRlZCB0byB0aGUgdGFnKSB0aGUgc3BlbGxpbmcgaXMgYmVpbmcgaW52b2tlZC4KKyAgICAg
KgorICAgICAqIEBwYXJhbSBld2tWaWV3IHRoZSB2aWV3IG9iamVjdCB0byBnZXQgdW5pcXVlIHRh
ZworICAgICAqCisgICAgICogQHJldHVybiB1bmlxdWUgdGFnIGZvciB0aGUgZ2l2ZW4gQGEgZXdr
VmlldyBvYmplY3QKKyAgICAgKi8KKyAgICBzdGF0aWMgdWludDY0X3Qgb25TcGVsbERvY3VtZW50
VGFnKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VR
KGRlZmF1bHRWaWV3LCBld2tWaWV3KTsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMu
c3BlbGxEb2N1bWVudFRhZyA9IHRydWU7CiAKLS8qKgotICogVGhlIHZpZXcgd2hpY2ggaXMgYXNz
b2NpYXRlZCB0byB0aGUgQGEgdGFnIGhhcyBiZWVuIGRlc3Ryb3llZC4KLSAqCi0gKiBAaW50ZXJu
YWwKLSAqCi0gKiBAcGFyYW0gdGFnIHRoZSB0YWcgdG8gYmUgY2xvc2VkCi0gKi8KLXN0YXRpYyB2
b2lkIG9uU3BlbGxEb2N1bWVudFRhZ0Nsb3NlKHVpbnQ2NF90IHRhZykKLXsKLSAgICBBU1NFUlRf
RVEoZGVmYXVsdERvY3VtZW50VGFnLCB0YWcpOwotICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRz
LnNwZWxsRG9jdW1lbnRUYWdDbG9zZSA9IHRydWU7Ci19CisgICAgICAgIHJldHVybiBkZWZhdWx0
RG9jdW1lbnRUYWc7CisgICAgfQogCi0vKioKLSAqIENoZWNrcyBzcGVsbGluZyBmb3IgdGhlIGdp
dmVuIEBhIHRleHQuCi0gKgotICogQGludGVybmFsCi0gKgotICogQHBhcmFtIHRhZyB1bmlxdWUg
dGFnIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9uIHdoaWNoIG9iamVjdCB0aGUgc3BlbGxpbmcgaXMg
YmVpbmcgcGVyZm9ybWVkCi0gKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSB3
b3JkcyB0byBzcGVsbGNoZWNrCi0gKiBAcGFyYW0gbWlzc3BlbGxpbmdfbG9jYXRpb24gYSBwb2lu
dGVyIHRvIHN0b3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG1pc3NwZWxsZWQgQGEgdGV4dCwgQGMg
LTEgaWYgdGhlIEBhIHRleHQgaXMgY29ycmVjdAotICogQHBhcmFtIG1pc3NwZWxsaW5nX2xlbmd0
aCBhIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGxlbmd0aCBvZiBtaXNzcGVsbGVkIEBhIHRleHQsIEBj
IDAgaWYgdGhlIEBhIHRleHQgaXMgY29ycmVjdAotICovCi1zdGF0aWMgdm9pZCBvblNwZWxsaW5n
Q2hlY2sodWludDY0X3QgdGFnLCBjb25zdCBjaGFyKiB0ZXh0LCBpbnQzMl90KiBtaXNzcGVsbGlu
Z0xvY2F0aW9uLCBpbnQzMl90KiBtaXNzcGVsbGluZ0xlbmd0aCkKLXsKLSAgICBBU1NFUlRfRVEo
ZGVmYXVsdERvY3VtZW50VGFnLCB0YWcpOwotICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZE1pc3Nw
ZWxsZWRXb3JkLCB0ZXh0KTsKKyAgICAvKioKKyAgICAgKiBUaGUgdmlldyB3aGljaCBpcyBhc3Nv
Y2lhdGVkIHRvIHRoZSBAYSB0YWcgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgICAqCisgICAgICog
QGludGVybmFsCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGFnIHRoZSB0YWcgdG8gYmUgY2xvc2Vk
CisgICAgICovCisgICAgc3RhdGljIHZvaWQgb25TcGVsbERvY3VtZW50VGFnQ2xvc2UodWludDY0
X3QgdGFnKQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKGRlZmF1bHREb2N1bWVudFRhZywgdGFn
KTsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMuc3BlbGxEb2N1bWVudFRhZ0Nsb3Nl
ID0gdHJ1ZTsKKyAgICB9CiAKLSAgICBBU1NFUlRfVFJVRShtaXNzcGVsbGluZ0xvY2F0aW9uKTsK
LSAgICBBU1NFUlRfVFJVRShtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgLyoqCisgICAgICogQ2hl
Y2tzIHNwZWxsaW5nIGZvciB0aGUgZ2l2ZW4gQGEgdGV4dC4KKyAgICAgKgorICAgICAqIEBpbnRl
cm5hbAorICAgICAqCisgICAgICogQHBhcmFtIHRhZyB1bmlxdWUgdGFnIHRvIG5vdGlmeSB0aGUg
Y2xpZW50IG9uIHdoaWNoIG9iamVjdCB0aGUgc3BlbGxpbmcgaXMgYmVpbmcgcGVyZm9ybWVkCisg
ICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgY29udGFpbmluZyB0aGUgd29yZHMgdG8gc3BlbGxj
aGVjaworICAgICAqIEBwYXJhbSBtaXNzcGVsbGluZ19sb2NhdGlvbiBhIHBvaW50ZXIgdG8gc3Rv
cmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWlzc3BlbGxlZCBAYSB0ZXh0LCBAYyAtMSBpZiB0aGUg
QGEgdGV4dCBpcyBjb3JyZWN0CisgICAgICogQHBhcmFtIG1pc3NwZWxsaW5nX2xlbmd0aCBhIHBv
aW50ZXIgdG8gc3RvcmUgdGhlIGxlbmd0aCBvZiBtaXNzcGVsbGVkIEBhIHRleHQsIEBjIDAgaWYg
dGhlIEBhIHRleHQgaXMgY29ycmVjdAorICAgICAqLworICAgIHN0YXRpYyB2b2lkIG9uU3BlbGxp
bmdDaGVjayh1aW50NjRfdCB0YWcsIGNvbnN0IGNoYXIqIHRleHQsIGludDMyX3QqIG1pc3NwZWxs
aW5nTG9jYXRpb24sIGludDMyX3QqIG1pc3NwZWxsaW5nTGVuZ3RoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX0VRKGRlZmF1bHREb2N1bWVudFRhZywgdGFnKTsKKyAgICAgICAgQVNTRVJUX1NUUkVR
KGV4cGVjdGVkTWlzc3BlbGxlZFdvcmQsIHRleHQpOwogCi0gICAgLy8gVGhlIGNsaWVudCBpcyBh
YmxlIHRvIHNob3cgdGhlIG1pc3NlbGxlZCB0ZXh0IHRocm91Z2ggaXRzIGxvY2F0aW9uICh0aGUg
YmVnaW5uaW5nIG9mIG1pc3NwZWxsaW5nKQotICAgIC8vIGFuZCBsZW5ndGggKHRoZSBlbmQgb2Yg
bWlzc3BlbGxpbmcpLgotICAgICptaXNzcGVsbGluZ0xvY2F0aW9uID0gMDsKLSAgICAqbWlzc3Bl
bGxpbmdMZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWRNaXNzcGVsbGVkV29yZCk7CisgICAgICAgIEFT
U0VSVF9UUlVFKG1pc3NwZWxsaW5nTG9jYXRpb24pOworICAgICAgICBBU1NFUlRfVFJVRShtaXNz
cGVsbGluZ0xlbmd0aCk7CiAKLSAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy5zcGVsbGluZ0No
ZWNrID0gdHJ1ZTsKLX0KKyAgICAgICAgLy8gVGhlIGNsaWVudCBpcyBhYmxlIHRvIHNob3cgdGhl
IG1pc3NlbGxlZCB0ZXh0IHRocm91Z2ggaXRzIGxvY2F0aW9uICh0aGUgYmVnaW5uaW5nIG9mIG1p
c3NwZWxsaW5nKQorICAgICAgICAvLyBhbmQgbGVuZ3RoICh0aGUgZW5kIG9mIG1pc3NwZWxsaW5n
KS4KKyAgICAgICAgKm1pc3NwZWxsaW5nTG9jYXRpb24gPSAwOworICAgICAgICAqbWlzc3BlbGxp
bmdMZW5ndGggPSBzdHJsZW4oZXhwZWN0ZWRNaXNzcGVsbGVkV29yZCk7CiAKLS8qKgotICogQ2hl
Y2tzIHNwZWxsaW5nIGZvciB0aGUgZ2l2ZW4gQGEgdGV4dCBhbmQgY29tcGFyZXMgaXQgd2l0aCB0
aGUga25vd25Xb3JkLgotICoKLSAqIEBpbnRlcm5hbAotICoKLSAqIEBwYXJhbSB0ZXh0IHRoZSB0
ZXh0IGNvbnRhaW5pbmcgdGhlIHdvcmRzIHRvIHNwZWxsY2hlY2sKLSAqIEBwYXJhbSBtaXNzcGVs
bGluZ19sb2NhdGlvbiBhIHBvaW50ZXIgdG8gc3RvcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgbWlz
c3BlbGxlZCBAYSB0ZXh0LCBAYyAtMSBpZiB0aGUgQGEgdGV4dCBpcyBjb3JyZWN0Ci0gKiBAcGFy
YW0gbWlzc3BlbGxpbmdfbGVuZ3RoIGEgcG9pbnRlciB0byBzdG9yZSB0aGUgbGVuZ3RoIG9mIG1p
c3NwZWxsZWQgQGEgdGV4dCwgQGMgMCBpZiB0aGUgQGEgdGV4dCBpcyBjb3JyZWN0Ci0gKi8KLXN0
YXRpYyB2b2lkIG9uU3BlbGxpbmdGb3JLbm93bldvcmQodWludDY0X3QsIGNvbnN0IGNoYXIqIHRl
eHQsIGludDMyX3QqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludDMyX3QqIG1pc3NwZWxsaW5nTGVu
Z3RoKQotewotICAgIEFTU0VSVF9TVFJFUShrbm93bldvcmQudXRmOCgpLmRhdGEoKSwgdGV4dCk7
CisgICAgICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNwZWxsaW5nQ2hlY2sgPSB0cnVlOwor
ICAgIH0KIAotICAgIEFTU0VSVF9UUlVFKG1pc3NwZWxsaW5nTG9jYXRpb24pOwotICAgIEFTU0VS
VF9UUlVFKG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAvKioKKyAgICAgKiBDaGVja3Mgc3BlbGxp
bmcgZm9yIHRoZSBnaXZlbiBAYSB0ZXh0IGFuZCBjb21wYXJlcyBpdCB3aXRoIHRoZSBrbm93bldv
cmQuCisgICAgICoKKyAgICAgKiBAaW50ZXJuYWwKKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0
IHRoZSB0ZXh0IGNvbnRhaW5pbmcgdGhlIHdvcmRzIHRvIHNwZWxsY2hlY2sKKyAgICAgKiBAcGFy
YW0gbWlzc3BlbGxpbmdfbG9jYXRpb24gYSBwb2ludGVyIHRvIHN0b3JlIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIG1pc3NwZWxsZWQgQGEgdGV4dCwgQGMgLTEgaWYgdGhlIEBhIHRleHQgaXMgY29ycmVj
dAorICAgICAqIEBwYXJhbSBtaXNzcGVsbGluZ19sZW5ndGggYSBwb2ludGVyIHRvIHN0b3JlIHRo
ZSBsZW5ndGggb2YgbWlzc3BlbGxlZCBAYSB0ZXh0LCBAYyAwIGlmIHRoZSBAYSB0ZXh0IGlzIGNv
cnJlY3QKKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBvblNwZWxsaW5nRm9yS25vd25Xb3JkKHVp
bnQ2NF90LCBjb25zdCBjaGFyKiB0ZXh0LCBpbnQzMl90KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBp
bnQzMl90KiBtaXNzcGVsbGluZ0xlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9TVFJFUShr
bm93bldvcmQudXRmOCgpLmRhdGEoKSwgdGV4dCk7CiAKLSAgICAqbWlzc3BlbGxpbmdMb2NhdGlv
biA9IC0xOwotICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgIEFTU0VSVF9UUlVF
KG1pc3NwZWxsaW5nTG9jYXRpb24pOworICAgICAgICBBU1NFUlRfVFJVRShtaXNzcGVsbGluZ0xl
bmd0aCk7CiAKLSAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy5zcGVsbGluZ0NoZWNrID0gdHJ1
ZTsKLX0KKyAgICAgICAgKm1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAgICAgICAgKm1pc3Nw
ZWxsaW5nTGVuZ3RoID0gMDsKIAotLyoqCi0gKiBHZXRzIGEgbGlzdCBvZiBzdWdnZXN0ZWQgc3Bl
bGxpbmdzIGZvciBhIG1pc3NwZWxsZWQgQGEgd29yZC4KLSAqCi0gKiBAaW50ZXJuYWwKLSAqCi0g
KiBAcGFyYW0gdGFnIHVuaXF1ZSB0YWcgdG8gbm90aWZ5IHRoZSBjbGllbnQgb24gd2hpY2ggb2Jq
ZWN0IHRoZSBzcGVsbGluZyBpcyBiZWluZyBwZXJmb3JtZWQKLSAqIEBwYXJhbSB3b3JkIHRoZSB3
b3JkIHRvIGdldCBndWVzc2VzCi0gKiBAcmV0dXJuIGEgbGlzdCBvZiBkeW5hbWljYWxseSBhbGxv
Y2F0ZWQgc3RyaW5ncyAoYXMgY2hhciopIGFuZAotICogICAgICAgICBjYWxsZXIgaXMgcmVzcG9u
c2libGUgZm9yIGRlc3Ryb3lpbmcgdGhlbS4KLSAqLwotc3RhdGljIEVpbmFfTGlzdCogb25Xb3Jk
R3Vlc3Nlcyh1aW50NjRfdCB0YWcsIGNvbnN0IGNoYXIqIHdvcmQpCi17Ci0gICAgRVhQRUNUX0VR
KGRlZmF1bHREb2N1bWVudFRhZywgdGFnKTsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWRNaXNz
cGVsbGVkV29yZCwgd29yZCk7CisgICAgICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLnNwZWxs
aW5nQ2hlY2sgPSB0cnVlOworICAgIH0KIAotICAgIEVpbmFfTGlzdCogc3VnZ2VzdGlvbnNGb3JX
b3JkID0gMDsKLSAgICBzaXplX3QgbnVtYmVyT2ZTdWdnZXN0aW9ucyA9IFdURl9BUlJBWV9MRU5H
VEgoY2xpZW50U3VnZ2VzdGlvbnNGb3JXb3JkKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mU3VnZ2VzdGlvbnM7ICsraSkKLSAgICAgICAgc3VnZ2VzdGlvbnNGb3JXb3JkID0g
ZWluYV9saXN0X2FwcGVuZChzdWdnZXN0aW9uc0ZvcldvcmQsIHN0cmR1cChjbGllbnRTdWdnZXN0
aW9uc0ZvcldvcmRbaV0pKTsKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgbGlzdCBvZiBzdWdnZXN0
ZWQgc3BlbGxpbmdzIGZvciBhIG1pc3NwZWxsZWQgQGEgd29yZC4KKyAgICAgKgorICAgICAqIEBp
bnRlcm5hbAorICAgICAqCisgICAgICogQHBhcmFtIHRhZyB1bmlxdWUgdGFnIHRvIG5vdGlmeSB0
aGUgY2xpZW50IG9uIHdoaWNoIG9iamVjdCB0aGUgc3BlbGxpbmcgaXMgYmVpbmcgcGVyZm9ybWVk
CisgICAgICogQHBhcmFtIHdvcmQgdGhlIHdvcmQgdG8gZ2V0IGd1ZXNzZXMKKyAgICAgKiBAcmV0
dXJuIGEgbGlzdCBvZiBkeW5hbWljYWxseSBhbGxvY2F0ZWQgc3RyaW5ncyAoYXMgY2hhciopIGFu
ZAorICAgICAqICAgICAgICAgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBkZXN0cm95aW5nIHRo
ZW0uCisgICAgICovCisgICAgc3RhdGljIEVpbmFfTGlzdCogb25Xb3JkR3Vlc3Nlcyh1aW50NjRf
dCB0YWcsIGNvbnN0IGNoYXIqIHdvcmQpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoZGVmYXVs
dERvY3VtZW50VGFnLCB0YWcpOworICAgICAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWRNaXNzcGVs
bGVkV29yZCwgd29yZCk7CiAKLSAgICBjYWxsYmFja3NFeGVjdXRpb25TdGF0cy53b3JkR3Vlc3Nl
cyA9IHRydWU7Ci0gICAgcmV0dXJuIHN1Z2dlc3Rpb25zRm9yV29yZDsKLX0KKyAgICAgICAgRWlu
YV9MaXN0KiBzdWdnZXN0aW9uc0ZvcldvcmQgPSAwOworICAgICAgICBzaXplX3QgbnVtYmVyT2ZT
dWdnZXN0aW9ucyA9IFdURl9BUlJBWV9MRU5HVEgoY2xpZW50U3VnZ2VzdGlvbnNGb3JXb3JkKTsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlN1Z2dlc3Rpb25zOyArK2kp
CisgICAgICAgICAgICBzdWdnZXN0aW9uc0ZvcldvcmQgPSBlaW5hX2xpc3RfYXBwZW5kKHN1Z2dl
c3Rpb25zRm9yV29yZCwgc3RyZHVwKGNsaWVudFN1Z2dlc3Rpb25zRm9yV29yZFtpXSkpOwogCi0v
KioKLSAqIEFkZHMgdGhlIEBhIHdvcmQgdG8gdGhlIHNwZWxsIGNoZWNrZXIgZGljdGlvbmFyeS4K
LSAqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBAcGFyYW0gdGFnIHVuaXF1ZSB0YWcgdG8gbm90aWZ5
IHRoZSBjbGllbnQgb24gd2hpY2ggb2JqZWN0IHRoZSBzcGVsbGluZyBpcyBiZWluZyBwZXJmb3Jt
ZWQKLSAqIEBwYXJhbSB3b3JkIHRoZSB3b3JkIHRvIGFkZAotICovCi1zdGF0aWMgdm9pZCBvbldv
cmRMZWFybih1aW50NjRfdCB0YWcsIGNvbnN0IGNoYXIqIHdvcmQpCi17Ci0gICAgQVNTRVJUX0VR
KGRlZmF1bHREb2N1bWVudFRhZywgdGFnKTsKLSAgICBBU1NFUlRfU1RSRVEoZXhwZWN0ZWRNaXNz
cGVsbGVkV29yZCwgd29yZCk7Ci0gICAga25vd25Xb3JkID0gd29yZDsKLSAgICBjYWxsYmFja3NF
eGVjdXRpb25TdGF0cy53b3JkTGVhcm4gPSB0cnVlOwotfQorICAgICAgICBjYWxsYmFja3NFeGVj
dXRpb25TdGF0cy53b3JkR3Vlc3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybiBzdWdnZXN0aW9u
c0ZvcldvcmQ7CisgICAgfQogCi0vKioKLSAqIFRlbGxzIHRoZSBzcGVsbCBjaGVja2VyIHRvIGln
bm9yZSBhIGdpdmVuIEBhIHdvcmQuCi0gKgotICogQGludGVybmFsCi0gKgotICogQHBhcmFtIHRh
ZyB1bmlxdWUgdGFnIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9uIHdoaWNoIG9iamVjdCB0aGUgc3Bl
bGxpbmcgaXMgYmVpbmcgcGVyZm9ybWVkCi0gKiBAcGFyYW0gd29yZCB0aGUgd29yZCB0byBpZ25v
cmUKLSAqLwotc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29uc3QgY2hh
ciogd29yZCkKLXsKLSAgICBBU1NFUlRfRVEoZGVmYXVsdERvY3VtZW50VGFnLCB0YWcpOwotICAg
IEFTU0VSVF9TVFJFUShleHBlY3RlZE1pc3NwZWxsZWRXb3JkLCB3b3JkKTsKLSAgICBrbm93bldv
cmQgPSB3b3JkOwotICAgIGNhbGxiYWNrc0V4ZWN1dGlvblN0YXRzLndvcmRJZ25vcmUgPSB0cnVl
OwotfQorICAgIC8qKgorICAgICAqIEFkZHMgdGhlIEBhIHdvcmQgdG8gdGhlIHNwZWxsIGNoZWNr
ZXIgZGljdGlvbmFyeS4KKyAgICAgKgorICAgICAqIEBpbnRlcm5hbAorICAgICAqCisgICAgICog
QHBhcmFtIHRhZyB1bmlxdWUgdGFnIHRvIG5vdGlmeSB0aGUgY2xpZW50IG9uIHdoaWNoIG9iamVj
dCB0aGUgc3BlbGxpbmcgaXMgYmVpbmcgcGVyZm9ybWVkCisgICAgICogQHBhcmFtIHdvcmQgdGhl
IHdvcmQgdG8gYWRkCisgICAgICovCisgICAgc3RhdGljIHZvaWQgb25Xb3JkTGVhcm4odWludDY0
X3QgdGFnLCBjb25zdCBjaGFyKiB3b3JkKQorICAgIHsKKyAgICAgICAgQVNTRVJUX0VRKGRlZmF1
bHREb2N1bWVudFRhZywgdGFnKTsKKyAgICAgICAgQVNTRVJUX1NUUkVRKGV4cGVjdGVkTWlzc3Bl
bGxlZFdvcmQsIHdvcmQpOworICAgICAgICBrbm93bldvcmQgPSB3b3JkOworICAgICAgICBjYWxs
YmFja3NFeGVjdXRpb25TdGF0cy53b3JkTGVhcm4gPSB0cnVlOworICAgIH0KIAotLyoqCi0gKiBI
ZWxwZXIsIGdldCByZXF1aXJlZCBpdGVtIGZyb20gY29udGV4dCBtZW51LgotICoKLSAqIEBwYXJh
bSBjb250ZXh0TWVudSB0aGUgY29udGV4dCBtZW51IG9iamVjdAotICogQHBhcmFtIGl0ZW1BY3Rp
b24gYWN0aW9uIG9mIGl0ZW0gdG8gZ2V0Ci0gKiBAcGFyYW0gaXRlbVR5cGUgdHlwZSBvZiBpdGVt
IHRvIGdldAotICoKLSAqIEByZXR1cm4gcmVxdWlyZWQgaXRlbQotICovCi1zdGF0aWMgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBmaW5kQ29udGV4dE1lbnVJdGVtKGNvbnN0IEV3a19Db250ZXh0X01l
bnUqIGNvbnRleHRNZW51LCBFd2tfQ29udGV4dF9NZW51X0l0ZW1fQWN0aW9uIGl0ZW1BY3Rpb24s
IEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIGl0ZW1UeXBlKQotewotICAgIGNvbnN0IEVpbmFf
TGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRl
eHRNZW51KTsKLQotICAgIHZvaWQqIGl0ZW1EYXRhOwotICAgIGNvbnN0IEVpbmFfTGlzdCogbGlz
dEl0ZXJhdG9yOwotICAgIEVJTkFfTElTVF9GT1JFQUNIKGNvbnRleHRNZW51SXRlbXMsIGxpc3RJ
dGVyYXRvciwgaXRlbURhdGEpIHsKLSAgICAgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVt
ID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oaXRlbURhdGEpOwotICAgICAg
ICBpZiAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2FjdGlvbl9nZXQoaXRlbSkgPT0gaXRlbUFjdGlv
bgotICAgICAgICAgICAgJiYgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGl0ZW0pID09
IGl0ZW1UeXBlKQotICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgLyoqCisgICAgICogVGVs
bHMgdGhlIHNwZWxsIGNoZWNrZXIgdG8gaWdub3JlIGEgZ2l2ZW4gQGEgd29yZC4KKyAgICAgKgor
ICAgICAqIEBpbnRlcm5hbAorICAgICAqCisgICAgICogQHBhcmFtIHRhZyB1bmlxdWUgdGFnIHRv
IG5vdGlmeSB0aGUgY2xpZW50IG9uIHdoaWNoIG9iamVjdCB0aGUgc3BlbGxpbmcgaXMgYmVpbmcg
cGVyZm9ybWVkCisgICAgICogQHBhcmFtIHdvcmQgdGhlIHdvcmQgdG8gaWdub3JlCisgICAgICov
CisgICAgc3RhdGljIHZvaWQgb25Xb3JkSWdub3JlKHVpbnQ2NF90IHRhZywgY29uc3QgY2hhciog
d29yZCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9FUShkZWZhdWx0RG9jdW1lbnRUYWcsIHRhZyk7
CisgICAgICAgIEFTU0VSVF9TVFJFUShleHBlY3RlZE1pc3NwZWxsZWRXb3JkLCB3b3JkKTsKKyAg
ICAgICAga25vd25Xb3JkID0gd29yZDsKKyAgICAgICAgY2FsbGJhY2tzRXhlY3V0aW9uU3RhdHMu
d29yZElnbm9yZSA9IHRydWU7CiAgICAgfQogCi0gICAgQUREX0ZBSUxVUkUoKTsKLSAgICByZXR1
cm4gMDsKLX0KKyAgICAvKioKKyAgICAgKiBIZWxwZXIsIGdldCByZXF1aXJlZCBpdGVtIGZyb20g
Y29udGV4dCBtZW51LgorICAgICAqCisgICAgICogQHBhcmFtIGNvbnRleHRNZW51IHRoZSBjb250
ZXh0IG1lbnUgb2JqZWN0CisgICAgICogQHBhcmFtIGl0ZW1BY3Rpb24gYWN0aW9uIG9mIGl0ZW0g
dG8gZ2V0CisgICAgICogQHBhcmFtIGl0ZW1UeXBlIHR5cGUgb2YgaXRlbSB0byBnZXQKKyAgICAg
KgorICAgICAqIEByZXR1cm4gcmVxdWlyZWQgaXRlbQorICAgICAqLworICAgIHN0YXRpYyBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGZpbmRDb250ZXh0TWVudUl0ZW0oY29uc3QgRXdrX0NvbnRleHRf
TWVudSogY29udGV4dE1lbnUsIEV3a19Db250ZXh0X01lbnVfSXRlbV9BY3Rpb24gaXRlbUFjdGlv
biwgRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgaXRlbVR5cGUpCisgICAgeworICAgICAgICBj
b25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMgPSBld2tfY29udGV4dF9tZW51X2l0ZW1z
X2dldChjb250ZXh0TWVudSk7CisKKyAgICAgICAgdm9pZCogaXRlbURhdGE7CisgICAgICAgIGNv
bnN0IEVpbmFfTGlzdCogbGlzdEl0ZXJhdG9yOworICAgICAgICBFSU5BX0xJU1RfRk9SRUFDSChj
b250ZXh0TWVudUl0ZW1zLCBsaXN0SXRlcmF0b3IsIGl0ZW1EYXRhKSB7CisgICAgICAgICAgICBF
d2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51
X0l0ZW0qPihpdGVtRGF0YSk7CisgICAgICAgICAgICBpZiAoZXdrX2NvbnRleHRfbWVudV9pdGVt
X2FjdGlvbl9nZXQoaXRlbSkgPT0gaXRlbUFjdGlvbgorICAgICAgICAgICAgICAgICYmIGV3a19j
b250ZXh0X21lbnVfaXRlbV90eXBlX2dldChpdGVtKSA9PSBpdGVtVHlwZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgfQogCi1zdGF0aWMgRWluYV9Cb29sIGNoZWNrQ29y
cmVjdG5lc3NPZlNwZWxsaW5nSXRlbXMoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQs
IEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51KQotewotICAgIGNvbnN0
IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0
KGNvbnRleHRNZW51KTsKLQotICAgIGJvb2wgbm9HdWVzc2VzQXZhaWxhYmxlID0gZmFsc2U7Ci0g
ICAgYm9vbCBpc0lnbm9yZVNwZWxsaW5nQXZhaWxhYmxlID0gZmFsc2U7Ci0gICAgYm9vbCBpc0xl
YXJuU3BlbGxpbmdBdmFpbGFibGUgPSBmYWxzZTsKLQotICAgIGNvbnN0IEVpbmFfTGlzdCogbGlz
dEl0ZXJhdG9yOwotICAgIHZvaWQqIGl0ZW1EYXRhOwotICAgIEVJTkFfTElTVF9GT1JFQUNIKGNv
bnRleHRNZW51SXRlbXMsIGxpc3RJdGVyYXRvciwgaXRlbURhdGEpIHsKLSAgICAgICAgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVt
Kj4oaXRlbURhdGEpOwotICAgICAgICBpZiAoIXN0cmNtcChld2tfY29udGV4dF9tZW51X2l0ZW1f
dGl0bGVfZ2V0KGl0ZW0pLCBub0d1ZXNzZXNTdHJpbmcpKQotICAgICAgICAgICAgbm9HdWVzc2Vz
QXZhaWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChld2tfY29udGV4dF9t
ZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pLCBpZ25vcmVTcGVsbGluZ1N0cmluZykpCi0gICAgICAg
ICAgICBpc0lnbm9yZVNwZWxsaW5nQXZhaWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBpZiAo
IXN0cmNtcChld2tfY29udGV4dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pLCBsZWFyblNwZWxs
aW5nU3RyaW5nKSkKLSAgICAgICAgICAgIGlzTGVhcm5TcGVsbGluZ0F2YWlsYWJsZSA9IHRydWU7
CisgICAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IEVYUEVDVF9GQUxTRShub0d1ZXNzZXNBdmFpbGFibGUpOwotICAgIEVYUEVDVF9UUlVFKGlzSWdu
b3JlU3BlbGxpbmdBdmFpbGFibGUpOwotICAgIEVYUEVDVF9UUlVFKGlzTGVhcm5TcGVsbGluZ0F2
YWlsYWJsZSk7CisgICAgc3RhdGljIEVpbmFfQm9vbCBjaGVja0NvcnJlY3RuZXNzT2ZTcGVsbGlu
Z0l0ZW1zKEV3a19WaWV3X1NtYXJ0X0RhdGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tf
Q29udGV4dF9NZW51KiBjb250ZXh0TWVudSkKKyAgICB7CisgICAgICAgIGNvbnN0IEVpbmFfTGlz
dCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19jb250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRN
ZW51KTsKKworICAgICAgICBib29sIG5vR3Vlc3Nlc0F2YWlsYWJsZSA9IGZhbHNlOworICAgICAg
ICBib29sIGlzSWdub3JlU3BlbGxpbmdBdmFpbGFibGUgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBp
c0xlYXJuU3BlbGxpbmdBdmFpbGFibGUgPSBmYWxzZTsKKworICAgICAgICBjb25zdCBFaW5hX0xp
c3QqIGxpc3RJdGVyYXRvcjsKKyAgICAgICAgdm9pZCogaXRlbURhdGE7CisgICAgICAgIEVJTkFf
TElTVF9GT1JFQUNIKGNvbnRleHRNZW51SXRlbXMsIGxpc3RJdGVyYXRvciwgaXRlbURhdGEpIHsK
KyAgICAgICAgICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3
a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW1EYXRhKTsKKyAgICAgICAgICAgIGlmICghc3RyY21w
KGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoaXRlbSksIG5vR3Vlc3Nlc1N0cmluZykp
CisgICAgICAgICAgICAgICAgbm9HdWVzc2VzQXZhaWxhYmxlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKCFzdHJjbXAoZXdrX2NvbnRleHRfbWVudV9pdGVtX3RpdGxlX2dldChpdGVtKSwg
aWdub3JlU3BlbGxpbmdTdHJpbmcpKQorICAgICAgICAgICAgICAgIGlzSWdub3JlU3BlbGxpbmdB
dmFpbGFibGUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChld2tfY29udGV4
dF9tZW51X2l0ZW1fdGl0bGVfZ2V0KGl0ZW0pLCBsZWFyblNwZWxsaW5nU3RyaW5nKSkKKyAgICAg
ICAgICAgICAgICBpc0xlYXJuU3BlbGxpbmdBdmFpbGFibGUgPSB0cnVlOworICAgICAgICB9CiAK
LSAgICB3YXNDb250ZXh0TWVudVNob3duID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAg
ICAgICAgRVhQRUNUX0ZBTFNFKG5vR3Vlc3Nlc0F2YWlsYWJsZSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKGlzSWdub3JlU3BlbGxpbmdBdmFpbGFibGUpOworICAgICAgICBFWFBFQ1RfVFJVRShpc0xl
YXJuU3BlbGxpbmdBdmFpbGFibGUpOwogCi1zdGF0aWMgRWluYV9Cb29sIHRvb2dsZUNoZWNrU3Bl
bGxpbmdXaGlsZVR5cGluZyhFd2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19D
b29yZCwgRXdrX0NvbnRleHRfTWVudSogY29udGV4dE1lbnUpCi17Ci0gICAgRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBzcGVsbGluZ0FuZEdyYW1tYXJJdGVtID0gZmluZENvbnRleHRNZW51SXRlbShj
b250ZXh0TWVudSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVMTElOR19NRU5VLCBFV0tf
U1VCTUVOVV9UWVBFKTsKLSAgICBFd2tfQ29udGV4dF9NZW51KiBzcGVsbGluZ0FuZEdyYW1tYXJT
dWJtZW51ID0gZXdrX2NvbnRleHRfbWVudV9pdGVtX3N1Ym1lbnVfZ2V0KHNwZWxsaW5nQW5kR3Jh
bW1hckl0ZW0pOwotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogY2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nSXRlbSA9IGZpbmRDb250ZXh0TWVudUl0ZW0oc3BlbGxpbmdBbmRHcmFtbWFyU3VibWVu
dSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19DSEVDS19TUEVMTElOR19XSElMRV9UWVBJTkcs
IEVXS19DSEVDS0FCTEVfQUNUSU9OX1RZUEUpOworICAgICAgICB3YXNDb250ZXh0TWVudVNob3du
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgcmV0dXJuIGV3a19j
b250ZXh0X21lbnVfaXRlbV9zZWxlY3Qoc3BlbGxpbmdBbmRHcmFtbWFyU3VibWVudSwgY2hlY2tT
cGVsbGluZ1doaWxlVHlwaW5nSXRlbSk7Ci19CisgICAgc3RhdGljIEVpbmFfQm9vbCB0b29nbGVD
aGVja1NwZWxsaW5nV2hpbGVUeXBpbmcoRXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQs
IEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRleHRNZW51KQorICAgIHsKKyAgICAg
ICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBzcGVsbGluZ0FuZEdyYW1tYXJJdGVtID0gZmluZENv
bnRleHRNZW51SXRlbShjb250ZXh0TWVudSwgRVdLX0NPTlRFWFRfTUVOVV9JVEVNX1RBR19TUEVM
TElOR19NRU5VLCBFV0tfU1VCTUVOVV9UWVBFKTsKKyAgICAgICAgRXdrX0NvbnRleHRfTWVudSog
c3BlbGxpbmdBbmRHcmFtbWFyU3VibWVudSA9IGV3a19jb250ZXh0X21lbnVfaXRlbV9zdWJtZW51
X2dldChzcGVsbGluZ0FuZEdyYW1tYXJJdGVtKTsKKyAgICAgICAgRXdrX0NvbnRleHRfTWVudV9J
dGVtKiBjaGVja1NwZWxsaW5nV2hpbGVUeXBpbmdJdGVtID0gZmluZENvbnRleHRNZW51SXRlbShz
cGVsbGluZ0FuZEdyYW1tYXJTdWJtZW51LCBFV0tfQ09OVEVYVF9NRU5VX0lURU1fVEFHX0NIRUNL
X1NQRUxMSU5HX1dISUxFX1RZUElORywgRVdLX0NIRUNLQUJMRV9BQ1RJT05fVFlQRSk7CiAKLXN0
YXRpYyBFaW5hX0Jvb2wgY2hlY2tDbGllbnRTdWdnZXN0aW9uc0ZvcldvcmQoRXdrX1ZpZXdfU21h
cnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0X01lbnUqIGNvbnRl
eHRNZW51KQotewotICAgIGNvbnN0IEVpbmFfTGlzdCogY29udGV4dE1lbnVJdGVtcyA9IGV3a19j
b250ZXh0X21lbnVfaXRlbXNfZ2V0KGNvbnRleHRNZW51KTsKKyAgICAgICAgcmV0dXJuIGV3a19j
b250ZXh0X21lbnVfaXRlbV9zZWxlY3Qoc3BlbGxpbmdBbmRHcmFtbWFyU3VibWVudSwgY2hlY2tT
cGVsbGluZ1doaWxlVHlwaW5nSXRlbSk7CisgICAgfQogCi0gICAgc2l6ZV90IG51bWJlck9mU3Vn
Z2VzdGlvbnMgPSBXVEZfQVJSQVlfTEVOR1RIKGNsaWVudFN1Z2dlc3Rpb25zRm9yV29yZCk7Ci0g
ICAgLy8gY29udGV4dE1lbnVJdGVtcyBzaG91bGQgY29udGFpbiBzdWdnZXN0aW9ucyBhbmQgYW5v
dGhlciBvcHRpb25zLgotICAgIGlmIChudW1iZXJPZlN1Z2dlc3Rpb25zID4gZWluYV9saXN0X2Nv
dW50KGNvbnRleHRNZW51SXRlbXMpKSB7Ci0gICAgICAgIEFERF9GQUlMVVJFKCk7CisgICAgc3Rh
dGljIEVpbmFfQm9vbCBjaGVja0NsaWVudFN1Z2dlc3Rpb25zRm9yV29yZChFd2tfVmlld19TbWFy
dF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRfTWVudSogY29udGV4
dE1lbnUpCisgICAgeworICAgICAgICBjb25zdCBFaW5hX0xpc3QqIGNvbnRleHRNZW51SXRlbXMg
PSBld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVudSk7CisKKyAgICAgICAgc2l6
ZV90IG51bWJlck9mU3VnZ2VzdGlvbnMgPSBXVEZfQVJSQVlfTEVOR1RIKGNsaWVudFN1Z2dlc3Rp
b25zRm9yV29yZCk7CisgICAgICAgIC8vIGNvbnRleHRNZW51SXRlbXMgc2hvdWxkIGNvbnRhaW4g
c3VnZ2VzdGlvbnMgYW5kIGFub3RoZXIgb3B0aW9ucy4KKyAgICAgICAgaWYgKG51bWJlck9mU3Vn
Z2VzdGlvbnMgPiBlaW5hX2xpc3RfY291bnQoY29udGV4dE1lbnVJdGVtcykpIHsKKyAgICAgICAg
ICAgIEFERF9GQUlMVVJFKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBWZXJpZnkgc3VnZ2VzdGlvbnMgZnJvbSB0aGUgdG9wIG9mIGNvbnRleHQgbWVu
dSBsaXN0LgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mU3VnZ2VzdGlv
bnM7ICsraSkgeworICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3Rh
dGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oZWluYV9saXN0X2RhdGFfZ2V0KGNvbnRl
eHRNZW51SXRlbXMpKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUShjbGllbnRTdWdnZXN0aW9u
c0ZvcldvcmRbaV0sIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQoaXRlbSkpOworICAg
ICAgICAgICAgY29udGV4dE1lbnVJdGVtcyA9IGVpbmFfbGlzdF9uZXh0KGNvbnRleHRNZW51SXRl
bXMpOworICAgICAgICB9CisKKyAgICAgICAgd2FzQ29udGV4dE1lbnVTaG93biA9IHRydWU7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAvLyBWZXJpZnkgc3VnZ2VzdGlvbnMgZnJv
bSB0aGUgdG9wIG9mIGNvbnRleHQgbWVudSBsaXN0LgotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZTdWdnZXN0aW9uczsgKytpKSB7Ci0gICAgICAgIEV3a19Db250ZXh0X01lbnVf
SXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGVpbmFfbGlz
dF9kYXRhX2dldChjb250ZXh0TWVudUl0ZW1zKSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUShjbGll
bnRTdWdnZXN0aW9uc0ZvcldvcmRbaV0sIGV3a19jb250ZXh0X21lbnVfaXRlbV90aXRsZV9nZXQo
aXRlbSkpOwotICAgICAgICBjb250ZXh0TWVudUl0ZW1zID0gZWluYV9saXN0X25leHQoY29udGV4
dE1lbnVJdGVtcyk7CisKKyAgICBzdGF0aWMgRWluYV9Cb29sIHNlbGVjdExlYXJuU3BlbGxpbmco
RXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV3a19jb250ZXh0X21l
bnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGZpbmRDb250ZXh0TWVudUl0ZW0oY29udGV4dE1l
bnUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsIEVXS19BQ1RJT05f
VFlQRSkpOwogICAgIH0KIAotICAgIHdhc0NvbnRleHRNZW51U2hvd24gPSB0cnVlOwotICAgIHJl
dHVybiB0cnVlOwotfQorICAgIHN0YXRpYyBFaW5hX0Jvb2wgc2VsZWN0SWdub3JlU3BlbGxpbmco
RXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV3a19jb250ZXh0X21l
bnVfaXRlbV9zZWxlY3QoY29udGV4dE1lbnUsIGZpbmRDb250ZXh0TWVudUl0ZW0oY29udGV4dE1l
bnUsIEVXS19DT05URVhUX01FTlVfSVRFTV9UQUdfSUdOT1JFX1NQRUxMSU5HLCBFV0tfQUNUSU9O
X1RZUEUpKTsKKyAgICB9CiAKLXN0YXRpYyBFaW5hX0Jvb2wgc2VsZWN0TGVhcm5TcGVsbGluZyhF
d2tfVmlld19TbWFydF9EYXRhKiwgRXZhc19Db29yZCwgRXZhc19Db29yZCwgRXdrX0NvbnRleHRf
TWVudSogY29udGV4dE1lbnUpCi17Ci0gICAgcmV0dXJuIGV3a19jb250ZXh0X21lbnVfaXRlbV9z
ZWxlY3QoY29udGV4dE1lbnUsIGZpbmRDb250ZXh0TWVudUl0ZW0oY29udGV4dE1lbnUsIEVXS19D
T05URVhUX01FTlVfSVRFTV9UQUdfTEVBUk5fU1BFTExJTkcsIEVXS19BQ1RJT05fVFlQRSkpOwot
fQorICAgIC8qKgorICAgICAqIENvdW50IG51bWJlciBvZiBlbGVtZW50cyBpbiBjb250ZXh0IG1l
bnUuCisgICAgICovCisgICAgc3RhdGljIEVpbmFfQm9vbCBjb3VudENvbnRleHRNZW51SXRlbXMo
RXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQorICAgIHsKKyAgICAgICAgY29udGV4dE1lbnVJdGVtc051bWJl
ciA9IGVpbmFfbGlzdF9jb3VudChld2tfY29udGV4dF9tZW51X2l0ZW1zX2dldChjb250ZXh0TWVu
dSkpOworICAgICAgICB3YXNDb250ZXh0TWVudVNob3duID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQogCi1zdGF0aWMgRWluYV9Cb29sIHNlbGVjdElnbm9yZVNwZWxsaW5nKEV3
a19WaWV3X1NtYXJ0X0RhdGEqLCBFdmFzX0Nvb3JkLCBFdmFzX0Nvb3JkLCBFd2tfQ29udGV4dF9N
ZW51KiBjb250ZXh0TWVudSkKLXsKLSAgICByZXR1cm4gZXdrX2NvbnRleHRfbWVudV9pdGVtX3Nl
bGVjdChjb250ZXh0TWVudSwgZmluZENvbnRleHRNZW51SXRlbShjb250ZXh0TWVudSwgRVdLX0NP
TlRFWFRfTUVOVV9JVEVNX1RBR19JR05PUkVfU1BFTExJTkcsIEVXS19BQ1RJT05fVFlQRSkpOwot
fQorcHJvdGVjdGVkOgorICAgIGVudW0gTGluZSB7IEZpcnN0TGluZSwgU2Vjb25kTGluZSB9Owor
ICAgIGVudW0gQnV0dG9uIHsgU2VsZWN0QWxsV29yZHNXaXRoU3BlbGxjaGVja0J1dHRvbiwgU2Vs
ZWN0QWxsV29yZHNXaXRob3V0U3BlbGxjaGVja0J1dHRvbiwgU2VsZWN0U3ViV29yZFdpdGhTcGVs
bGNoZWNrQnV0dG9uIH07CiAKLS8qKgotICogQ291bnQgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGNv
bnRleHQgbWVudS4KLSAqLwotc3RhdGljIEVpbmFfQm9vbCBjb3VudENvbnRleHRNZW51SXRlbXMo
RXdrX1ZpZXdfU21hcnRfRGF0YSosIEV2YXNfQ29vcmQsIEV2YXNfQ29vcmQsIEV3a19Db250ZXh0
X01lbnUqIGNvbnRleHRNZW51KQotewotICAgIGNvbnRleHRNZW51SXRlbXNOdW1iZXIgPSBlaW5h
X2xpc3RfY291bnQoZXdrX2NvbnRleHRfbWVudV9pdGVtc19nZXQoY29udGV4dE1lbnUpKTsKLSAg
ICB3YXNDb250ZXh0TWVudVNob3duID0gdHJ1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KKyAgICB2
b2lkIGNsaWNrQnV0dG9uKEJ1dHRvbiBidXR0b24pCisgICAgeworICAgICAgICBzd2l0Y2ggKGJ1
dHRvbikgeworICAgICAgICBjYXNlIFNlbGVjdEFsbFdvcmRzV2l0aFNwZWxsY2hlY2tCdXR0b246
CisgICAgICAgICAgICBtb3VzZUNsaWNrKDYwLCA2MCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBTZWxlY3RBbGxXb3Jkc1dpdGhvdXRTcGVsbGNoZWNrQnV0dG9uOgorICAgICAg
ICAgICAgbW91c2VDbGljayg1MDAsIDYwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNlbGVjdFN1YldvcmRXaXRoU3BlbGxjaGVja0J1dHRvbiA6CisgICAgICAgICAgICBtb3Vz
ZUNsaWNrKDIwMCwgNjApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB2b2lkIHNob3dDb250ZXh0TWVudShMaW5lIGxpbmUpCisgICAgeworICAgICAgICBzd2l0
Y2ggKGxpbmUpIHsKKyAgICAgICAgY2FzZSBGaXJzdExpbmU6CisgICAgICAgICAgICBtb3VzZUNs
aWNrKDEwLCAyMCwgMyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWNvbmRM
aW5lOgorICAgICAgICAgICAgbW91c2VDbGljaygzNSwgMzUsIDMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNlbGVjdEZpcnN0V29yZChMaW5lIGxp
bmUpCisgICAgeworICAgICAgICBzd2l0Y2ggKGxpbmUpIHsKKyAgICAgICAgY2FzZSBGaXJzdExp
bmU6CisgICAgICAgICAgICBtb3VzZURvdWJsZUNsaWNrKDEwLCAyMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTZWNvbmRMaW5lOgorICAgICAgICAgICAgbW91c2VEb3VibGVD
bGljaygzNSwgMzUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9Owog
CiAvKioKICAqIFRlc3Qgd2hldGhlciB0aGVyZSBhcmUgc3BlbGxpbmcgc3VnZ2VzdGlvbnMgd2hl
biBtaXNzcGVsbGVkIHdvcmQgaXMgZGlyZWN0bHkgY29udGV4dCBjbGlja2VkLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>