From kito.mann at virtua.com Sun Aug 16 04:45:24 2020 Content-Type: multipart/mixed; boundary="===============6154459474761479416==" MIME-Version: 1.0 From: Kito Mann To: jsr-314-open-mirror at lists.jboss.org Subject: Re: [jsr-314-open] binding vs. ui:repeat Date: Wed, 09 Sep 2009 12:35:25 -0400 Message-ID: In-Reply-To: 1252470793.22703.41.camel@quadshark --===============6154459474761479416== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Wed, Sep 9, 2009 at 12:33 AM, Lincoln Baxter, III < lincolnbaxter(a)gmail.com> wrote: > One more issue I'd like to bring up: it appears that when using > the value of the object provided= has > not yet been updated in the model, hence, the value is the old value, not > the new value. > > When using on the button submitting the values, the new > value is populated into the model instead... which is the behavior I would > expect. > > Pardon the probably obvious question... > > Is there an contract with valueChangeListeners that states they fire befo= re > model updates? I see in the spec that it fires: "when a new local value h= as > been created, and has passed all validations," but nothing about if the > model has been updated or not. > They're fired after the Process Validations phase (or Apply Request Values if immediate=3Dtrue), which always occurs before the Update Model phase. The idea is that the input must be in a valid state before the model is updated. > > --Lincoln > > On Tue, 2009-09-08 at 09:59 -0700, Ryan Lubke wrote: > > On 9/7/09 6:06 PM, Andy Schwartz wrote: > > Thanks Lincoln. I haven't had time to debug this, but I have a theory > > about what might be happening. In your sample: > > > >> >> rendered=3D"#{!cc.attrs.disabled}"> > >> * >> action=3D"#{taskController.saveTaskAjax(cc.attrs.story, > >> cc.attrs.task)}" /> * > >> > > > > We expect "cc" to resolve to the containing composite component (ie. > > to the component). I wouldn't be surprised if > > what is actually happening is that "cc" is being resolved to the > > composite component instead. > Yep, that's what is happening. > > One reason why I suspect this might be happening is that I know that > > Ryan has investigated/resolved similar problems not too long ago. > The problem we resolved was the passing of #{cc.attrs} attributes > between nested composite components. > For this case, the spec recommends using cc.parent.attrs.story and > cc.parent.attrs.task, where parent resolves > to the nearest composite component parent of the current composite > component. > > Another reason why I am suspicious about this is because we have faced > > similar issues in our own (ADF Faces) declarative component solution. > > This stuff can get tricky. :-) > > > > Hey Ryan - > > > > Does this problem look familiar? Any thoughts on this? > > > > Andy > > > > Lincoln Baxter, III wrote: > >> Hey Andy, here you go: > >> > >> In the mean time I'm going to sign up for the dev lists. > >> > >> ---------------------------------------------------------------------- > >> Using: > >> >> action=3D"*#{taskController.saveTaskAjax(cc.attrs.story, > >> cc.attrs.task)}*" /> > >> > >> *#{taskController.saveTaskAjax(cc.attrs.story, cc.attrs.task)}* = =3D > >> null values passed to method > >> *#{taskController.saveTaskAjax(currentStoryBean.story, task)}* =3D > >> correct values resolved, assuming currentStoryBean.story and task > >> are both in the EL/page scope somewhere. > >> > >> > >> ---------------------------------------------------------------------- > >> *CC Impl:* > >> > >> > >> >> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> >> xmlns:h=3D"http://java.sun.com/jsf/html" > >> xmlns:f=3D"http://java.sun.com/jsf/core" > >> xmlns:a=3D"http://java.sun.com/jsf/composite/ajax" > >> xmlns:cc=3D"http://java.sun.com/jsf/composite"> > >> > >> > >> > >> >> default=3D"false" /> > >> > >> > >> > >> > >> > >> >> #{cc.attrs.styleClass} taskBlock_#{cc.attrs.task.status}" > >> style=3D"#{cc.attrs.style}"> > >> > >>
> >> >> rendered=3D"#{cc.attrs.disabled}"/> > >> >> rendered=3D"#{!cc.attrs.disabled}"> > >> * >> action=3D"#{taskController.saveTaskAjax(cc.attrs.story, > >> cc.attrs.task)}" /> * > >> > >>
> >>
> >> > >> > >> > >> ---------------------------------------------------------------------- > >> *consuming page code:* <-- this is where task is defined in the > >> UI:Repeat, so it is in scope > >> > >> >> PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > >> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> >> xmlns:c=3D"http://java.sun.com/jsp/jstl/core" > >> xmlns:f=3D"http://java.sun.com/jsf/core" > >> xmlns:h=3D"http://java.sun.com/jsf/html" > >> xmlns:socialpm=3D"http://java.sun.com/jsf/composite/socialpm" > >> xmlns:pretty=3D"http://ocpsoft.com/prettyfaces" > >> xmlns:ui=3D"http://java.sun.com/jsf/facelets" xml:lang=3D"en" lang=3D"= en"> > >> > >> > >> > >> > >>
This story has no tasks. That could be a problem > >> later...
> >>
> >> > >> > >> >> members=3D"#{currentProjectBean.project.activeMembers}" > >> disabled=3D"#{!authorizationBean.isMember or > >> !currentStoryBean.story.open}" > >> deletable=3D"true" styleClass=3D"m5t" refreshOnSave=3D"false" /> > >> > >>
> >>
> >> > >> > >> > >> > >> > >> On Sat, 2009-09-05 at 15:23 -0400, Andy Schwartz wrote: > >>> Hey Lincoln - > >>> > >>> Lincoln Baxter, III wrote: > >>> > First, please let me know if there is a better place to ask JSF > >>> Dev > related questions. > >>> > > >>> > >>> I suppose the Mojarra dev list might be the right place for > >>> implementation questions: > >>> > >>> https://javaserverfaces.dev.java.net/mailinglists.html > >>> > >>> Though personally I am fine with you asking here. :-) > >>> > >>> Could you send along your composite component implementation (and > >>> perhaps a snippet from the consuming page)? Just want to make sure > >>> I understand the use case. > >>> > >>> Andy > >>> > >>> > >> -- > >> *Lincoln Baxter, III* > >> Co-Founder of OcpSoft > >> Author of PrettyFaces URL Rewriting > >> for JSF > >> > >> > > > > > -- > *Lincoln Baxter, III* > Co-Founder of OcpSoft > Author of PrettyFaces URL Rewriting for > JSF > > > --===============6154459474761479416== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGJyPjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+T24gV2VkLCBTZXAgOSwgMjAwOSBhdCAx MjozMyBBTSwgTGluY29sbiBCYXh0ZXIsIElJSSA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9 Im1haWx0bzpsaW5jb2xuYmF4dGVyQGdtYWlsLmNvbSI+bGluY29sbmJheHRlckBnbWFpbC5jb208 L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIg c3R5bGU9ImJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBtYXJnaW46 IDBwdCAwcHQgMHB0IDAuOGV4OyBwYWRkaW5nLWxlZnQ6IDFleDsiPgoKCgogIAogIAoKPGRpdj4K T25lIG1vcmUgaXNzdWUgSSYjMzk7ZCBsaWtlIHRvIGJyaW5nIHVwOiBpdCBhcHBlYXJzIHRoYXQg d2hlbiB1c2luZyAmbHQ7Zjp2YWx1ZUNoYW5nZUxpc3RlbmVyIGFjdGlvbj0mcXVvdDsuLi4mcXVv dDsgLyZndDsgdGhlIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvdmlkZWQgaGFzIG5vdCB5ZXQgYmVl biB1cGRhdGVkIGluIHRoZSBtb2RlbCwgaGVuY2UsIHRoZSB2YWx1ZSBpcyB0aGUgb2xkIHZhbHVl LCBub3QgdGhlIG5ldyB2YWx1ZS48YnI+Cgo8YnI+CldoZW4gdXNpbmcgJmx0O2Y6YWN0aW9uTGlz dGVuZXImZ3Q7IG9uIHRoZSBidXR0b24gc3VibWl0dGluZyB0aGUgdmFsdWVzLCB0aGUgbmV3IHZh bHVlIGlzIHBvcHVsYXRlZCBpbnRvIHRoZSBtb2RlbCBpbnN0ZWFkLi4uIHdoaWNoIGlzIHRoZSBi ZWhhdmlvciBJIHdvdWxkIGV4cGVjdC48YnI+Cjxicj4KUGFyZG9uIHRoZSBwcm9iYWJseSBvYnZp b3VzIHF1ZXN0aW9uLi4uPGJyPgo8YnI+CklzIHRoZXJlIGFuIGNvbnRyYWN0IHdpdGggdmFsdWVD aGFuZ2VMaXN0ZW5lcnMgdGhhdCBzdGF0ZXMgdGhleSBmaXJlIGJlZm9yZSBtb2RlbCB1cGRhdGVz PyBJIHNlZSBpbiB0aGUgc3BlYyB0aGF0IGl0IGZpcmVzOiAmcXVvdDt3aGVuIGEgbmV3IGxvY2Fs IHZhbHVlIGhhcyBiZWVuIGNyZWF0ZWQsIGFuZCBoYXMgcGFzc2VkIGFsbCB2YWxpZGF0aW9ucywm cXVvdDsgYnV0IG5vdGhpbmcgYWJvdXQgaWYgdGhlIG1vZGVsIGhhcyBiZWVuIHVwZGF0ZWQgb3Ig bm90Ljxicj4KPC9kaXY+PC9ibG9ja3F1b3RlPjxkaXY+PGJyPlRoZXkmIzM5O3JlIGZpcmVkIGFm dGVyIHRoZSBQcm9jZXNzIFZhbGlkYXRpb25zIHBoYXNlIChvciBBcHBseSBSZXF1ZXN0IFZhbHVl cyBpZiBpbW1lZGlhdGU9dHJ1ZSksIHdoaWNoIGFsd2F5cyBvY2N1cnMgYmVmb3JlIHRoZSBVcGRh dGUgTW9kZWwgcGhhc2UuIFRoZSBpZGVhIGlzIHRoYXQgdGhlIGlucHV0IG11c3QgYmUgaW4gYSB2 YWxpZCBzdGF0ZSBiZWZvcmUgdGhlIG1vZGVsIGlzIHVwZGF0ZWQuPGJyPgo8L2Rpdj48YmxvY2tx dW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDogMXB4IHNvbGlkIHJn YigyMDQsIDIwNCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsgcGFkZGluZy1sZWZ0 OiAxZXg7Ij48ZGl2Pjxmb250IGNvbG9yPSIjODg4ODg4Ij4KPGJyPgotLUxpbmNvbG48L2ZvbnQ+ PGRpdiBjbGFzcz0iaW0iPjxicj4KPGJyPgpPbiBUdWUsIDIwMDktMDktMDggYXQgMDk6NTkgLTA3 MDAsIFJ5YW4gTHVia2Ugd3JvdGU6CjwvZGl2PjxkaXY+PGRpdj48L2Rpdj48ZGl2IGNsYXNzPSJo NSI+PGJsb2NrcXVvdGUgdHlwZT0iQ0lURSI+CjxwcmU+T24gOS83LzA5IDY6MDYgUE0sIEFuZHkg U2Nod2FydHogd3JvdGU6CiZndDsgVGhhbmtzIExpbmNvbG4uICBJIGhhdmVuJiMzOTt0IGhhZCB0 aW1lIHRvIGRlYnVnIHRoaXMsIGJ1dCBJIGhhdmUgYSB0aGVvcnkgCiZndDsgYWJvdXQgd2hhdCBt aWdodCBiZSBoYXBwZW5pbmcuICBJbiB5b3VyIHNhbXBsZToKJmd0OwomZ3Q7Jmd0OyAmbHQ7YTpl ZGl0VGV4dCB2YWx1ZT0mcXVvdDsje2NjLmF0dHJzLnRhc2sudGV4dH0mcXVvdDsgCiZndDsmZ3Q7 IHJlbmRlcmVkPSZxdW90OyN7IWNjLmF0dHJzLmRpc2FibGVkfSZxdW90OyZndDsKJmd0OyZndDsg KiZsdDtmOmFjdGlvbkxpc3RlbmVyIGZvcj0mcXVvdDtzdWJtaXQmcXVvdDsgCiZndDsmZ3Q7IGFj dGlvbj0mcXVvdDsje3Rhc2tDb250cm9sbGVyLnNhdmVUYXNrQWpheChjYy5hdHRycy5zdG9yeSwg CiZndDsmZ3Q7IGNjLmF0dHJzLnRhc2spfSZxdW90OyAvJmd0OyAqCiZndDsmZ3Q7ICZsdDsvYTpl ZGl0VGV4dCZndDsKJmd0OwomZ3Q7IFdlIGV4cGVjdCAmcXVvdDtjYyZxdW90OyB0byByZXNvbHZl IHRvIHRoZSBjb250YWluaW5nIGNvbXBvc2l0ZSBjb21wb25lbnQgKGllLiAKJmd0OyB0byB0aGUg Jmx0O3NvY2lhbHBtOnRhc2tCbG9jayZndDsgY29tcG9uZW50KS4gIEkgd291bGRuJiMzOTt0IGJl IHN1cnByaXNlZCBpZiAKJmd0OyB3aGF0IGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpcyB0aGF0ICZx dW90O2NjJnF1b3Q7IGlzICBiZWluZyByZXNvbHZlZCB0byB0aGUgCiZndDsgJmx0O2E6ZWRpdFRl eHQmZ3Q7IGNvbXBvc2l0ZSBjb21wb25lbnQgaW5zdGVhZC4KWWVwLCB0aGF0JiMzOTtzIHdoYXQg aXMgaGFwcGVuaW5nLgomZ3Q7IE9uZSByZWFzb24gd2h5IEkgc3VzcGVjdCB0aGlzIG1pZ2h0IGJl IGhhcHBlbmluZyBpcyB0aGF0IEkga25vdyB0aGF0IAomZ3Q7IFJ5YW4gaGFzIGludmVzdGlnYXRl ZC9yZXNvbHZlZCBzaW1pbGFyIHByb2JsZW1zIG5vdCB0b28gbG9uZyBhZ28uClRoZSBwcm9ibGVt IHdlIHJlc29sdmVkIHdhcyB0aGUgcGFzc2luZyBvZiAje2NjLmF0dHJzfSBhdHRyaWJ1dGVzIApi ZXR3ZWVuIG5lc3RlZCBjb21wb3NpdGUgY29tcG9uZW50cy4KRm9yIHRoaXMgY2FzZSwgdGhlIHNw ZWMgcmVjb21tZW5kcyB1c2luZyBjYy5wYXJlbnQuYXR0cnMuc3RvcnkgYW5kIApjYy5wYXJlbnQu YXR0cnMudGFzaywgd2hlcmUgcGFyZW50IHJlc29sdmVzCnRvIHRoZSBuZWFyZXN0IGNvbXBvc2l0 ZSBjb21wb25lbnQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGNvbXBvc2l0ZSAKY29tcG9uZW50Lgom Z3Q7IEFub3RoZXIgcmVhc29uIHdoeSBJIGFtIHN1c3BpY2lvdXMgYWJvdXQgdGhpcyBpcyBiZWNh dXNlIHdlIGhhdmUgZmFjZWQgCiZndDsgc2ltaWxhciBpc3N1ZXMgaW4gb3VyIG93biAoQURGIEZh Y2VzKSBkZWNsYXJhdGl2ZSBjb21wb25lbnQgc29sdXRpb24uICAKJmd0OyBUaGlzIHN0dWZmIGNh biBnZXQgdHJpY2t5LiA6LSkKJmd0OwomZ3Q7IEhleSBSeWFuIC0KJmd0OwomZ3Q7IERvZXMgdGhp cyBwcm9ibGVtIGxvb2sgZmFtaWxpYXI/ICBBbnkgdGhvdWdodHMgb24gdGhpcz8KJmd0OwomZ3Q7 IEFuZHkKJmd0OwomZ3Q7IExpbmNvbG4gQmF4dGVyLCBJSUkgd3JvdGU6CiZndDsmZ3Q7IEhleSBB bmR5LCBoZXJlIHlvdSBnbzoKJmd0OyZndDsKJmd0OyZndDsgSW4gdGhlIG1lYW4gdGltZSBJJiMz OTttIGdvaW5nIHRvIHNpZ24gdXAgZm9yIHRoZSBkZXYgbGlzdHMuCiZndDsmZ3Q7CiZndDsmZ3Q7 IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KJmd0OyZndDsgVXNpbmc6CiZndDsmZ3Q7ICZsdDtmOmFjdGlvbkxpc3Rl bmVyIGZvcj0mcXVvdDtzdWJtaXQmcXVvdDsgCiZndDsmZ3Q7IGFjdGlvbj0mcXVvdDsqI3t0YXNr Q29udHJvbGxlci5zYXZlVGFza0FqYXgoY2MuYXR0cnMuc3RvcnksIAomZ3Q7Jmd0OyBjYy5hdHRy cy50YXNrKX0qJnF1b3Q7IC8mZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7ICAgICAqI3t0YXNrQ29udHJv bGxlci5zYXZlVGFza0FqYXgoY2MuYXR0cnMuc3RvcnksIGNjLmF0dHJzLnRhc2spfSogPQomZ3Q7 Jmd0OyAgICAgbnVsbCB2YWx1ZXMgcGFzc2VkIHRvIG1ldGhvZAomZ3Q7Jmd0OyAgICAgKiN7dGFz a0NvbnRyb2xsZXIuc2F2ZVRhc2tBamF4KGN1cnJlbnRTdG9yeUJlYW4uc3RvcnksIHRhc2spfSog PQomZ3Q7Jmd0OyAgICAgY29ycmVjdCB2YWx1ZXMgcmVzb2x2ZWQsIGFzc3VtaW5nIGN1cnJlbnRT dG9yeUJlYW4uc3RvcnkgYW5kIHRhc2sKJmd0OyZndDsgICAgIGFyZSBib3RoIGluIHRoZSBFTC9w YWdlIHNjb3BlIHNvbWV3aGVyZS4KJmd0OyZndDsKJmd0OyZndDsKJmd0OyZndDsgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQomZ3Q7Jmd0OyAqQ0MgSW1wbDoqCiZndDsmZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7ICZsdDsh RE9DVFlQRSBodG1sIFBVQkxJQyAmcXVvdDstLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlv bmFsLy9FTiZxdW90OwomZ3Q7Jmd0OyAgICAgICAgICZxdW90OzxhIGhyZWY9Imh0dHA6Ly93d3cu dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiIHRhcmdldD0iX2Js YW5rIj5odHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwu ZHRkPC9hPiZxdW90OyZndDsKJmd0OyZndDsgJmx0O2h0bWwgeG1sbnM9JnF1b3Q7PGEgaHJlZj0i aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cu dzMub3JnLzE5OTkveGh0bWw8L2E+JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOmg9JnF1b3Q7PGEgaHJl Zj0iaHR0cDovL2phdmEuc3VuLmNvbS9qc2YvaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9q YXZhLnN1bi5jb20vanNmL2h0bWw8L2E+JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOmY9JnF1b3Q7PGEg aHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9qc2YvY29yZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6 Ly9qYXZhLnN1bi5jb20vanNmL2NvcmU8L2E+JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOmE9JnF1b3Q7 PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9qc2YvY29tcG9zaXRlL2FqYXgiIHRhcmdldD0i X2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL2pzZi9jb21wb3NpdGUvYWpheDwvYT4mcXVvdDsK Jmd0OyZndDsgeG1sbnM6Y2M9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNvbS9qc2Yv Y29tcG9zaXRlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2phdmEuc3VuLmNvbS9qc2YvY29tcG9z aXRlPC9hPiZxdW90OyZndDsKJmd0OyZndDsgJmx0O2NjOmludGVyZmFjZSZndDsKJmd0OyZndDsg Jmx0O2NjOmF0dHJpYnV0ZSBuYW1lPSZxdW90O3N0b3J5JnF1b3Q7IHJlcXVpcmVkPSZxdW90O3Ry dWUmcXVvdDsgdHlwZT0mcXVvdDtPYmplY3QmcXVvdDsgLyZndDsKJmd0OyZndDsgJmx0O2NjOmF0 dHJpYnV0ZSBuYW1lPSZxdW90O3Rhc2smcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7dHJ1ZSZxdW90OyB0 eXBlPSZxdW90O09iamVjdCZxdW90OyAvJmd0OwomZ3Q7Jmd0OyAmbHQ7Y2M6YXR0cmlidXRlIG5h bWU9JnF1b3Q7ZGlzYWJsZWQmcXVvdDsgcmVxdWlyZWQ9JnF1b3Q7ZmFsc2UmcXVvdDsgdHlwZT0m cXVvdDtCb29sZWFuJnF1b3Q7IAomZ3Q7Jmd0OyBkZWZhdWx0PSZxdW90O2ZhbHNlJnF1b3Q7IC8m Z3Q7CiZndDsmZ3Q7ICZsdDtjYzppbnNlcnRDaGlsZHJlbiAvJmd0OwomZ3Q7Jmd0OyAmbHQ7L2Nj OmludGVyZmFjZSZndDsKJmd0OyZndDsKJmd0OyZndDsgJmx0O2NjOmltcGxlbWVudGF0aW9uJmd0 OwomZ3Q7Jmd0OyAmbHQ7aDpvdXRwdXRTdHlsZXNoZWV0IG5hbWU9JnF1b3Q7c29jaWFscG0vc29j aWFscG0uY3NzJnF1b3Q7IC8mZ3Q7CiZndDsmZ3Q7ICZsdDtoOnBhbmVsR3JvdXAgaWQ9JnF1b3Q7 dGFza0Jsb2NrJnF1b3Q7IGxheW91dD0mcXVvdDtibG9jayZxdW90OyBjbGFzcz0mcXVvdDtib3gt Ym9yZGVyZWQgcDUgCiZndDsmZ3Q7ICN7Y2MuYXR0cnMuc3R5bGVDbGFzc30gdGFza0Jsb2NrXyN7 Y2MuYXR0cnMudGFzay5zdGF0dXN9JnF1b3Q7IAomZ3Q7Jmd0OyBzdHlsZT0mcXVvdDsje2NjLmF0 dHJzLnN0eWxlfSZxdW90OyZndDsKJmd0OyZndDsKJmd0OyZndDsgJmx0O2RpdiBjbGFzcz0mcXVv dDttNWwmcXVvdDsgc3R5bGU9JnF1b3Q7bWFyZ2luLXJpZ2h0OiAyNXB4OyZxdW90OyAmZ3Q7CiZn dDsmZ3Q7ICZsdDtoOm91dHB1dFRleHQgdmFsdWU9JnF1b3Q7I3tjYy5hdHRycy50YXNrLnRleHR9 JnF1b3Q7IAomZ3Q7Jmd0OyByZW5kZXJlZD0mcXVvdDsje2NjLmF0dHJzLmRpc2FibGVkfSZxdW90 Oy8mZ3Q7CiZndDsmZ3Q7ICZsdDthOmVkaXRUZXh0IHZhbHVlPSZxdW90OyN7Y2MuYXR0cnMudGFz ay50ZXh0fSZxdW90OyAKJmd0OyZndDsgcmVuZGVyZWQ9JnF1b3Q7I3shY2MuYXR0cnMuZGlzYWJs ZWR9JnF1b3Q7Jmd0OwomZ3Q7Jmd0OyAqJmx0O2Y6YWN0aW9uTGlzdGVuZXIgZm9yPSZxdW90O3N1 Ym1pdCZxdW90OyAKJmd0OyZndDsgYWN0aW9uPSZxdW90OyN7dGFza0NvbnRyb2xsZXIuc2F2ZVRh c2tBamF4KGNjLmF0dHJzLnN0b3J5LCAKJmd0OyZndDsgY2MuYXR0cnMudGFzayl9JnF1b3Q7IC8m Z3Q7ICoKJmd0OyZndDsgJmx0Oy9hOmVkaXRUZXh0Jmd0OwomZ3Q7Jmd0OyAmbHQ7L2RpdiZndDsK Jmd0OyZndDsgJmx0Oy9jYzppbXBsZW1lbnRhdGlvbiZndDsKJmd0OyZndDsgJmx0Oy9odG1sJmd0 OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiZndDsmZ3Q7ICpjb25z dW1pbmcgcGFnZSBjb2RlOiogJmx0Oy0tIHRoaXMgaXMgd2hlcmUgdGFzayBpcyBkZWZpbmVkIGlu IHRoZSAKJmd0OyZndDsgVUk6UmVwZWF0LCBzbyBpdCBpcyBpbiBzY29wZQomZ3Q7Jmd0OwomZ3Q7 Jmd0OyAmbHQ7IURPQ1RZUEUgaHRtbAomZ3Q7Jmd0OyAgICAgICBQVUJMSUMgJnF1b3Q7LS8vVzND Ly9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4mcXVvdDsKJmd0OyZndDsgICAgICAgJnF1 b3Q7PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNp dGlvbmFsLmR0ZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9E VEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQ8L2E+JnF1b3Q7Jmd0OwomZ3Q7Jmd0OyAmbHQ7aHRt bCB4bWxucz0mcXVvdDs8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB0YXJn ZXQ9Il9ibGFuayI+aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbDwvYT4mcXVvdDsKJmd0OyZn dDsgeG1sbnM6Yz0mcXVvdDs8YSBocmVmPSJodHRwOi8vamF2YS5zdW4uY29tL2pzcC9qc3RsL2Nv cmUiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL2pzcC9qc3RsL2NvcmU8L2E+ JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOmY9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNv bS9qc2YvY29yZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9qYXZhLnN1bi5jb20vanNmL2NvcmU8 L2E+JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOmg9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3Vu LmNvbS9qc2YvaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9qYXZhLnN1bi5jb20vanNmL2h0 bWw8L2E+JnF1b3Q7CiZndDsmZ3Q7IHhtbG5zOnNvY2lhbHBtPSZxdW90OzxhIGhyZWY9Imh0dHA6 Ly9qYXZhLnN1bi5jb20vanNmL2NvbXBvc2l0ZS9zb2NpYWxwbSIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHA6Ly9qYXZhLnN1bi5jb20vanNmL2NvbXBvc2l0ZS9zb2NpYWxwbTwvYT4mcXVvdDsKJmd0OyZn dDsgeG1sbnM6cHJldHR5PSZxdW90OzxhIGhyZWY9Imh0dHA6Ly9vY3Bzb2Z0LmNvbS9wcmV0dHlm YWNlcyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9vY3Bzb2Z0LmNvbS9wcmV0dHlmYWNlczwvYT4m cXVvdDsKJmd0OyZndDsgeG1sbnM6dWk9JnF1b3Q7PGEgaHJlZj0iaHR0cDovL2phdmEuc3VuLmNv bS9qc2YvZmFjZWxldHMiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5zdW4uY29tL2pzZi9m YWNlbGV0czwvYT4mcXVvdDsgeG1sOmxhbmc9JnF1b3Q7ZW4mcXVvdDsgbGFuZz0mcXVvdDtlbiZx dW90OyZndDsKJmd0OyZndDsKJmd0OyZndDsgJmx0O3VpOmNvbXBvc2l0aW9uJmd0OwomZ3Q7Jmd0 OyAmbHQ7aDpmb3JtIGlkPSZxdW90O3Rhc2tzRm9ybSZxdW90OyZndDsKJmd0OyZndDsgJmx0O2M6 aWYgdGVzdD0mcXVvdDsje2VtcHR5IGN1cnJlbnRTdG9yeUJlYW4uc3RvcnkudGFza3N9JnF1b3Q7 Jmd0OwomZ3Q7Jmd0OyAmbHQ7ZGl2IGNsYXNzPSZxdW90O201JnF1b3Q7Jmd0O1RoaXMgc3Rvcnkg aGFzIG5vIHRhc2tzLiBUaGF0IGNvdWxkIGJlIGEgcHJvYmxlbSAKJmd0OyZndDsgbGF0ZXIuLi4m bHQ7L2RpdiZndDsKJmd0OyZndDsgJmx0Oy9jOmlmJmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyAmbHQ7 dWk6cmVwZWF0IHZhbHVlPSZxdW90OyN7Y3VycmVudFN0b3J5QmVhbi5zdG9yeS50YXNrc30mcXVv dDsgdmFyPSZxdW90O3Rhc2smcXVvdDsmZ3Q7CiZndDsmZ3Q7ICZsdDtzb2NpYWxwbTp0YXNrQmxv Y2sgdGFzaz0mcXVvdDsje3Rhc2t9JnF1b3Q7IHN0b3J5PSZxdW90OyN7Y3VycmVudFN0b3J5QmVh bi5zdG9yeX0mcXVvdDsKJmd0OyZndDsgbWVtYmVycz0mcXVvdDsje2N1cnJlbnRQcm9qZWN0QmVh bi5wcm9qZWN0LmFjdGl2ZU1lbWJlcnN9JnF1b3Q7CiZndDsmZ3Q7IGRpc2FibGVkPSZxdW90OyN7 IWF1dGhvcml6YXRpb25CZWFuLmlzTWVtYmVyIG9yIAomZ3Q7Jmd0OyAhY3VycmVudFN0b3J5QmVh bi5zdG9yeS5vcGVufSZxdW90OwomZ3Q7Jmd0OyBkZWxldGFibGU9JnF1b3Q7dHJ1ZSZxdW90OyBz dHlsZUNsYXNzPSZxdW90O201dCZxdW90OyByZWZyZXNoT25TYXZlPSZxdW90O2ZhbHNlJnF1b3Q7 IC8mZ3Q7CiZndDsmZ3Q7ICZsdDsvdWk6cmVwZWF0Jmd0OwomZ3Q7Jmd0OyAmbHQ7L2g6Zm9ybSZn dDsKJmd0OyZndDsgJmx0Oy91aTpjb21wb3NpdGlvbiZndDsKJmd0OyZndDsgJmx0Oy9odG1sJmd0 OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBPbiBTYXQsIDIw MDktMDktMDUgYXQgMTU6MjMgLTA0MDAsIEFuZHkgU2Nod2FydHogd3JvdGU6CiZndDsmZ3Q7Jmd0 OyBIZXkgTGluY29sbiAtCiZndDsmZ3Q7Jmd0OwomZ3Q7Jmd0OyZndDsgTGluY29sbiBCYXh0ZXIs IElJSSB3cm90ZToKJmd0OyZndDsmZ3Q7ICZndDsgRmlyc3QsIHBsZWFzZSBsZXQgbWUga25vdyBp ZiB0aGVyZSBpcyBhIGJldHRlciBwbGFjZSB0byBhc2sgSlNGIAomZ3Q7Jmd0OyZndDsgRGV2ICZn dDsgcmVsYXRlZCBxdWVzdGlvbnMuCiZndDsmZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7Jmd0OwomZ3Q7 Jmd0OyZndDsgSSBzdXBwb3NlIHRoZSBNb2phcnJhIGRldiBsaXN0IG1pZ2h0IGJlIHRoZSByaWdo dCBwbGFjZSBmb3IgCiZndDsmZ3Q7Jmd0OyBpbXBsZW1lbnRhdGlvbiBxdWVzdGlvbnM6CiZndDsm Z3Q7Jmd0OwomZ3Q7Jmd0OyZndDsgPGEgaHJlZj0iaHR0cHM6Ly9qYXZhc2VydmVyZmFjZXMuZGV2 LmphdmEubmV0L21haWxpbmdsaXN0cy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9qYXZh c2VydmVyZmFjZXMuZGV2LmphdmEubmV0L21haWxpbmdsaXN0cy5odG1sPC9hPgomZ3Q7Jmd0OyZn dDsKJmd0OyZndDsmZ3Q7IFRob3VnaCBwZXJzb25hbGx5IEkgYW0gZmluZSB3aXRoIHlvdSBhc2tp bmcgaGVyZS4gOi0pCiZndDsmZ3Q7Jmd0OwomZ3Q7Jmd0OyZndDsgQ291bGQgeW91IHNlbmQgYWxv bmcgeW91ciBjb21wb3NpdGUgY29tcG9uZW50IGltcGxlbWVudGF0aW9uIChhbmQgCiZndDsmZ3Q7 Jmd0OyBwZXJoYXBzIGEgc25pcHBldCBmcm9tIHRoZSBjb25zdW1pbmcgcGFnZSk/ICBKdXN0IHdh bnQgdG8gbWFrZSBzdXJlIAomZ3Q7Jmd0OyZndDsgSSB1bmRlcnN0YW5kIHRoZSB1c2UgY2FzZS4K Jmd0OyZndDsmZ3Q7CiZndDsmZ3Q7Jmd0OyBBbmR5CiZndDsmZ3Q7Jmd0OwomZ3Q7Jmd0OyZndDsK Jmd0OyZndDsgLS0gCiZndDsmZ3Q7ICpMaW5jb2xuIEJheHRlciwgSUlJKgomZ3Q7Jmd0OyBDby1G b3VuZGVyIG9mIE9jcFNvZnQgJmx0OzxhIGhyZWY9Imh0dHA6Ly9vY3Bzb2Z0LmNvbSIgdGFyZ2V0 PSJfYmxhbmsiPmh0dHA6Ly9vY3Bzb2Z0LmNvbTwvYT4mZ3Q7CiZndDsmZ3Q7IEF1dGhvciBvZiBQ cmV0dHlGYWNlcyAmbHQ7PGEgaHJlZj0iaHR0cDovL29jcHNvZnQuY29tL3ByZXR0eWZhY2VzIiB0 YXJnZXQ9Il9ibGFuayI+aHR0cDovL29jcHNvZnQuY29tL3ByZXR0eWZhY2VzPC9hPiZndDsgVVJM IFJld3JpdGluZyAKJmd0OyZndDsgZm9yIEpTRgomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Cgo8L3By ZT4KPC9ibG9ja3F1b3RlPgo8L2Rpdj48L2Rpdj48dGFibGUgY2VsbHBhZGRpbmc9IjAiIGNlbGxz cGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+Cjx0Ym9keT48dHI+Cjx0ZD4KLS08ZGl2IGNsYXNzPSJp bSI+PGJyPgo8Yj5MaW5jb2xuIEJheHRlciwgSUlJPC9iPjxicj4KQ28tRm91bmRlciBvZiA8YSBo cmVmPSJodHRwOi8vb2Nwc29mdC5jb20iIHRhcmdldD0iX2JsYW5rIj5PY3BTb2Z0PC9hPjxicj48 L2Rpdj48ZGl2IGNsYXNzPSJpbSI+CkF1dGhvciBvZiA8YSBocmVmPSJodHRwOi8vb2Nwc29mdC5j b20vcHJldHR5ZmFjZXMiIHRhcmdldD0iX2JsYW5rIj5QcmV0dHlGYWNlczwvYT4gVVJMIFJld3Jp dGluZyBmb3IgSlNGPGJyPgo8YnI+Cjxicj4KPC9kaXY+PC90ZD4KPC90cj4KPC90Ym9keT48L3Rh YmxlPgo8L2Rpdj4KCjwvYmxvY2txdW90ZT48L2Rpdj48YnI+Cg== --===============6154459474761479416==--