Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Resource URIs for FeatureMaps
Resource URIs for FeatureMaps [message #505902] Tue, 05 January 2010 14:13 Go to next message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------080800090406010106030000
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

I'm trying to determine the Resource URIs for the EObjects in my model.
My model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships.

My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry.

EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained.

How do I determine the Resource URI is this scenario?

$cott

--------------080800090406010106030000
Content-Type: image/jpeg;
name="library.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="library.jpg"

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------080800090406010106030000--
Re: Resource URIs for FeatureMaps [message #505905 is a reply to message #505902] Tue, 05 January 2010 14:30 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030300020701050708080508
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Scott,

Comments below.


Scott Dybiec wrote:
> I'm trying to determine the Resource URIs for the EObjects in my
> model. My model is divided among multiple file-based Resources in a
> ResourceSet partitioned around containment relationships.
>
> My test example uses the extended Library model with Writer and Books
> stored each in their own resources --- separate from the library root
> resource. The extended Library ecore model screenshot is attached. In
> this model, the 'books' reference is a EFeatureMapEntry.
>
> EObject.eResource().getURI() works fine for the standard containment
> relationships with direct containment references like Writer, but I
> can't find a method to determine the Resource URI that works for
> references contained in FeatureMaps, like books, borrowedBooks and
> returnedBooks. When I query the Book.eResource.getURI, it returns the
> Library's Resource URI, not the URI of the Resource where the Book is
> actually contained.
Where are books actually contained if not the library? I ask because I
don't see any other Book references. Are borrowedBooks and
returnedBooks containment references? Are books supposed to be in their
own resource? If both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?
>
> How do I determine the Resource URI is this scenario?
>
> $cott
>
> ------------------------------------------------------------ ------------
>

--------------030300020701050708080508
Content-Type: multipart/related;
boundary="------------030305060406040003080100"


--------------030305060406040003080100
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships.
<br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry.
<br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained.
<br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?&nbsp; Are books supposed to be in
their own resource? If both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite"><br>
How do I determine the Resource URI is this scenario?
<br>
<br>
$cott
<br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.07000909.00040808@gmail.com"></center>
</blockquote>
</body>
</html>

--------------030305060406040003080100
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.07000909.00040808@gmail.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------030305060406040003080100--

--------------030300020701050708080508--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource URIs for FeatureMaps [message #505926 is a reply to message #505905] Tue, 05 January 2010 15:04 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070101040106020109040900
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">&nbsp; Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a class="moz-txt-link-rfc2396E" href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a class="moz-txt-link-rfc2396E" href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a class="moz-txt-link-rfc2396E" href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a class="moz-txt-link-rfc2396E" href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite"> If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.03050608.03060502@humanfactor.com"></center>
</blockquote>
</blockquote>
<br>
</body>
</html>

--------------070101040106020109040900
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.03050608.03060502@humanfactor.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------070101040106020109040900--
Re: Resource URIs for FeatureMaps [message #505942 is a reply to message #505926] Tue, 05 January 2010 15:16 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------080401090806040406020903
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Scott,

Have you stepped through the call to eResource with the debugger? It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:

<borrowedBooks href="Book/model.xmi#/0"/>

But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information. Perhaps you're calling it before
you've actually put the other objects in a resource... Or perhaps your
calling eResource() on an unresolved proxy...


Scott Dybiec wrote:
> Comments below.
>
> Ed Merks wrote:
>> Scott,
>>
>> Comments below.
>>
>>
>> Scott Dybiec wrote:
>>> I'm trying to determine the Resource URIs for the EObjects in my
>>> model. My model is divided among multiple file-based Resources in a
>>> ResourceSet partitioned around containment relationships.
>>>
>>> My test example uses the extended Library model with Writer and
>>> Books stored each in their own resources --- separate from the
>>> library root resource. The extended Library ecore model screenshot
>>> is attached. In this model, the 'books' reference is a
>>> EFeatureMapEntry.
>>>
>>> EObject.eResource().getURI() works fine for the standard containment
>>> relationships with direct containment references like Writer, but I
>>> can't find a method to determine the Resource URI that works for
>>> references contained in FeatureMaps, like books, borrowedBooks and
>>> returnedBooks. When I query the Book.eResource.getURI, it returns
>>> the Library's Resource URI, not the URI of the Resource where the
>>> Book is actually contained.
>> Where are books actually contained if not the library? I ask because
>> I don't see any other Book references. Are borrowedBooks and
>> returnedBooks containment references?
> Yes, both borrowedBooks and returnedBooks are multiplity-many
> containment references.
>> Are books supposed to be in their own resource?
> Yes. All the books are currently in their own resource. The
> Books/model.xmi file looks like this:
>
> <?xml version="1.0" encoding="ASCII"?>
> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0">
> <com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography">
> <author href="../Writer/model.xmi#/0"/>
> </com.humanfactor.emf.modelmanager.test.library:Book>
> <com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction">
> <author href="../Writer/model.xmi#/1"/>
> .....
>
>
> And here's an excerpt from the middle of the library's root resource
> with references to the books resource:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <com.humanfactor.emf.modelmanager.test.library:Library xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0" name="Project Gutenberg eBook Library">
> <writers href="Writer/model.xmi#/0"/>
> <writers href="Writer/model.xmi#/1"/>
> ....
> <writers href="Writer/model.xmi#/7212"/>
> <writers href="Writer/model.xmi#/7213"/>
> <borrowedBooks href="Book/model.xmi#/0"/>
> <returnedBooks href="Book/model.xmi#/1"/>
> <returnedBooks href="Book/model.xmi#/2"/>
> <returnedBooks href="Book/model.xmi#/3"/>
> <returnedBooks href="Book/model.xmi#/4"/>
> <returnedBooks href="Book/model.xmi#/5"/>
> ....
>
>
>> If both the answers are yes, are those containment references proxy
>> resolving and you've set the GenModel's Containment Proxies to true
>> to support cross resource containment?
> Yes, both the GenModel Containment Proxies is set to true and the
> borrowedbooks and returnedbooks references have the 'resolveProxies'
> properties set to true. All proxied references resolve as expected and
> the model works fine ---- except that EObject.eResource().getURI() for
> Books doesn't return what I'd expect --- the URI for the
> 'Book/model.xmi'. Instead, it returns the Library Resource URI instead.
>>>
>>> How do I determine the Resource URI is this scenario?
>>>
>>> $cott
>>>
>>> ------------------------------------------------------------ ------------
>>>
>

--------------080401090806040406020903
Content-Type: multipart/related;
boundary="------------060409030906090501040100"


--------------060409030906090501040100
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a moz-do-not-send="true"
class="moz-txt-link-rfc2396E" href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite"> If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.05060206.07000902@gmail.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</body>
</html>

--------------060409030906090501040100
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.05060206.07000902@gmail.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------060409030906090501040100--

--------------080401090806040406020903--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource URIs for FeatureMaps [message #506006 is a reply to message #505942] Tue, 05 January 2010 18:23 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------090302010200060406000903
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Yes, the debugger has become my best friend trying to solve this :-)
I've found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(), true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject = EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
<br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org" type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.03010300.02090303@humanfactor.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</body>
</html>

--------------090302010200060406000903
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.03010300.02090303@humanfactor.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------090302010200060406000903--
Re: Resource URIs for FeatureMaps [message #506027 is a reply to message #506006] Tue, 05 January 2010 19:24 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------050403030406020607030803
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Scott,

Comments below.

Scott Dybiec wrote:
> Yes, the debugger has become my best friend trying to solve this :-)
You've seen my best friend suggestions in the past hey? :-P
> I've found that the reason that EObject.eResource() for the book is
> returning the library's root resource URI pointing to the file
> gutenberg.library, is because the book is an unresolved proxy. This is
> baffling since after loading the root model and before I query the
> book object, I call:
>
> EcoreUtil.resolveAll(domain.getResourceSet());
>
> which I verified works fine resolving the Writer proxies, /but not the
> Books proxies/.
>
> I also tried iterating through the graph using:
>
> EcoreUtil.getAllContents(domain.getResourceSet(), true)
>
> which is supposed to resolve all proxies in the ResourceSet, but
> doesn't for any of the books proxies.
>
> Interestingly, running:
>
> EObject resolvedEObject = EcoreUtil.resolve(eObject,
> domain.getResourceSet());
>
> for each proxied Book does properly find the Book resource and resolve
> the Book object.
>
> Something is special about the borrowedBooks and returnedBooks
> references making them 'invisible' to the EcoreUtil.resolveAll() and
> EcoreUtil.getAllContents() proxy resolution techniques.
>
> Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:

public EObject eResolveProxy(InternalEObject proxy)
{
return EcoreUtil.resolve(proxy, this);
}

It will be interesting to note why this fails when you call the accessor
to pull a book out of one of the lists. Is it even being invoked.
FeatureMaps are kind of an XMLish thing while cross resource containment
is definitely an XMIish thing so perhaps they're not working nicely
together because no one ever mixed them.
>
> $cott
>
>
> Ed Merks wrote:
>> Scott,
>>
>> Have you stepped through the call to eResource with the debugger?
>> It's pretty clear that the EMF framework can determine the URI of the
>> book because of this serialization:
>>
>> <borrowedBooks href="Book/model.xmi#/0"/>
>>
>> But it does that by calling eResource so I don't understand how it's
>> possible that the correct serialization is produced by eResource
>> itself is returning the wrong information. Perhaps you're calling it
>> before you've actually put the other objects in a resource... Or
>> perhaps your calling eResource() on an unresolved proxy...
>>
>>
>> Scott Dybiec wrote:
>>> Comments below.
>>>
>>> Ed Merks wrote:
>>>> Scott,
>>>>
>>>> Comments below.
>>>>
>>>>
>>>> Scott Dybiec wrote:
>>>>> I'm trying to determine the Resource URIs for the EObjects in my
>>>>> model. My model is divided among multiple file-based Resources in
>>>>> a ResourceSet partitioned around containment relationships.
>>>>>
>>>>> My test example uses the extended Library model with Writer and
>>>>> Books stored each in their own resources --- separate from the
>>>>> library root resource. The extended Library ecore model screenshot
>>>>> is attached. In this model, the 'books' reference is a
>>>>> EFeatureMapEntry.
>>>>>
>>>>> EObject.eResource().getURI() works fine for the standard
>>>>> containment relationships with direct containment references like
>>>>> Writer, but I can't find a method to determine the Resource URI
>>>>> that works for references contained in FeatureMaps, like books,
>>>>> borrowedBooks and returnedBooks. When I query the
>>>>> Book.eResource.getURI, it returns the Library's Resource URI, not
>>>>> the URI of the Resource where the Book is actually contained.
>>>> Where are books actually contained if not the library? I ask
>>>> because I don't see any other Book references. Are borrowedBooks
>>>> and returnedBooks containment references?
>>> Yes, both borrowedBooks and returnedBooks are multiplity-many
>>> containment references.
>>>> Are books supposed to be in their own resource?
>>> Yes. All the books are currently in their own resource. The
>>> Books/model.xmi file looks like this:
>>>
>>> <?xml version="1.0" encoding="ASCII"?>
>>> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0">
>>> <com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography">
>>> <author href="../Writer/model.xmi#/0"/>
>>> </com.humanfactor.emf.modelmanager.test.library:Book>
>>> <com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction">
>>> <author href="../Writer/model.xmi#/1"/>
>>> .....
>>>
>>>
>>> And here's an excerpt from the middle of the library's root resource
>>> with references to the books resource:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <com.humanfactor.emf.modelmanager.test.library:Library xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0" name="Project Gutenberg eBook Library">
>>> <writers href="Writer/model.xmi#/0"/>
>>> <writers href="Writer/model.xmi#/1"/>
>>> ....
>>> <writers href="Writer/model.xmi#/7212"/>
>>> <writers href="Writer/model.xmi#/7213"/>
>>> <borrowedBooks href="Book/model.xmi#/0"/>
>>> <returnedBooks href="Book/model.xmi#/1"/>
>>> <returnedBooks href="Book/model.xmi#/2"/>
>>> <returnedBooks href="Book/model.xmi#/3"/>
>>> <returnedBooks href="Book/model.xmi#/4"/>
>>> <returnedBooks href="Book/model.xmi#/5"/>
>>> ....
>>>
>>>
>>>> If both the answers are yes, are those containment references proxy
>>>> resolving and you've set the GenModel's Containment Proxies to true
>>>> to support cross resource containment?
>>> Yes, both the GenModel Containment Proxies is set to true and the
>>> borrowedbooks and returnedbooks references have the 'resolveProxies'
>>> properties set to true. All proxied references resolve as expected
>>> and the model works fine ---- except that
>>> EObject.eResource().getURI() for Books doesn't return what I'd
>>> expect --- the URI for the 'Book/model.xmi'. Instead, it returns the
>>> Library Resource URI instead.
>>>>>
>>>>> How do I determine the Resource URI is this scenario?
>>>>>
>>>>> $cott
>>>>>
>>>>> ------------------------------------------------------------ ------------
>>>>>
>>>
>

--------------050403030406020607030803
Content-Type: multipart/related;
boundary="------------040103030609040909000800"


--------------040103030609040909000800
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Scott,<br>
<br>
Comments below.<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
<title></title>
Yes, the debugger has become my best friend trying to solve this :-)
</blockquote>
You've seen my best friend suggestions in the past hey? :-P<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">I've
found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(), true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject = EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
</blockquote>
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:<br>
<blockquote>&nbsp; public EObject eResolveProxy(InternalEObject proxy)<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; return EcoreUtil.resolve(proxy, this);<br>
&nbsp; }<br>
</blockquote>
It will be interesting to note why this fails when you call the
accessor to pull a book out of one of the lists.&nbsp; Is it even being
invoked.&nbsp; FeatureMaps are kind of an XMLish thing while cross resource
containment is definitely an XMIish thing so perhaps they're not
working nicely together because no one ever mixed them.<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite"><br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org" type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.01050702.08050200@gmail.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</body>
</html>

--------------040103030609040909000800
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.01050702.08050200@gmail.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc
FF6HN/E6PTZfFWgLq934ftIBZXpV9dtlngLb7XhVaRAHxnBz0Dcc8AFfR/EG pxDToJ9Qu7XU
I30+CHRbwxvPdQSRwedPJuQSu6GSfLqVUGA5X5XBAM+88QanqGmaeqahHqd3 O9jc31lIY0XS
7wX1pttiY03xAl5RiTe/7rjJVsgGwbzSry9J8e3FpLYRW6Ii6tFFFDDe75Gn jZCSiuEaDy9x
YmPLIzgyOwBHrPio6d4h0u20G+sbbTVlsrSKxa6hRbuKV41823hERaSMJLgM sqqGib5SFIYA
x9P1fUtI8G+GbCz8RwW0a2hjvrm+u7e1+w3EccAFmXMEiqw3SHy3TzPkJ3YU ggGpceKNTW4t
f7S16PTNTN7psEWlxxxxLexSm386QRzJ52N0s65BXHl4IDK2QCunivXJLOxN hrkc9/eJanUI
pIIpF0i5e7tYzblECsoImnXZIxf91wwKsaAOomudctPEEGhLdSXAunhuor2R YgyW8QUXCFAA
GJdYxu4P+mZUYiNAHWUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA 2RA6hWLAAg/K
xXoc9vp079KAHUAFABQAUAFABQBVvtNsdQ2fb7K2uvLzs86JX2564yOOg/Kk 4p7oadiS0s7a
yiMVlbQ20ZO4pEgQZ9cD6UoxjDSKsDbe5NVCCgAoAKACgAoAz7zRbK91GC9u lnkkg2lIzcye
RlTuVjDu8tmB5DFSQQpByowAaFAFeOxt49Rmv0jxdTxRwyPuPzIhcqMdBgyP +fsKALFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//Z
--------------040103030609040909000800--

--------------050403030406020607030803--


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource URIs for FeatureMaps [message #506425 is a reply to message #506027] Thu, 07 January 2010 13:58 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060600080407050901080205
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Further debugging is indicating that the ContentTreeIterator cannot
resolve FeatureMap proxies. Here's some tests I ran and the
corresponding output from each:<br>
<br>
<b>Test 1:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">Library
library = loadLibrary(modelManager);</font><br>
<font face="Courier New, Courier, monospace">logger.debug("*** Test
1: Direct access to feature map and derived lists");</font><br>
<font face="Courier New, Courier, monospace">accessBorrowedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessReturnedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessAllBooksUsingFeatureMap(library);</font></small ><br>
<br>
Output: <br>
*** Test 1: Direct access to feature map and derived lists<br>
getBorrowedBooks(): Found 0 proxied books and 2257 resolved books<br>
getReturnedBooks(): Found 0 proxied books and 20308 resolved books<br>
featureMap getBooks(): Found 0 proxied books and 22565 resolved books<br>
</blockquote>
This test works as expected --- the proxies are resolved. It accesses
the borrowed and returned books this way:<br>
<blockquote><font face="Courier New, Courier, monospace"><small>int
proxyBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>int
resolvedBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>List&lt;Book&gt;
books = library.getBorrowedBooks();</small></font><br>
<font face="Courier New, Courier, monospace"><small>for (Book book :
books) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; } else {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; }</small></font><br>
<font face="Courier New, Courier, monospace"><small>}</small></font><br>
<br>
and the FeatureMap this way:<br>
<br>
<small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Entry&gt; iterator = library.getBooks().listIterator();
iterator.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Book book =
(Book) iterator.next().getValue();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 2:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 2: ContentTreeIterator access without resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
false);</font></small><br>
<br>
Output: <br>
*** Test 2: ContentTreeIterator access without resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 7205 proxied writers and 0 resolved writers<br>
</blockquote>
Test 2 and Test 3 are the same except for the 'resolveProxies' flag
being send to the ContentTreeIterator. As expected, no proxies were
resolved for either Writers or Books. Here's how the access takes place
for both Test 2 and Test 3:<br>
<blockquote><small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
proxyWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Object&gt; iter = EcoreUtil.getAllContents(resourceSet,
resolve); iter.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Object object
= iter.next();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if (object
instanceof EObject) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EObject
eObject = (EObject) object;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Book")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Writer")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
logger.debug("Found instance of " + object.getClass().getName());</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 3:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 3: ContentTreeIterator access with resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
true);</font></small><br>
<br>
Output: <br>
*** Test 3: ContentTreeIterator access with resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 0 proxied writers and 14410 resolved writers<br>
</blockquote>
This test failed to resolve FeatureMap-based Book proxies, but
correctly resolved standard containment Writer proxies. I think this
shows double the number of actual writers because the tree iterator is
following the author reference in Books to Writer.<br>
<br>
I tried tracing the ContentTreeIterator code down, but got lost in the
tangled web of anonymous classes in this part of the EMF framework. <br>
<br>
Where would you recommend I go next?<br>
<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi03m6$uq$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
Yes, the debugger has become my best friend trying to solve this :-)
</blockquote>
You've seen my best friend suggestions in the past hey? :-P<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">I've
found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(), true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject = EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
</blockquote>
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:<br>
<blockquote>&nbsp; public EObject eResolveProxy(InternalEObject proxy)<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; return EcoreUtil.resolve(proxy, this);<br>
&nbsp; }<br>
</blockquote>
It will be interesting to note why this fails when you call the
accessor to pull a book out of one of the lists.&nbsp; Is it even being
invoked.&nbsp; FeatureMaps are kind of an XMLish thing while cross resource
containment is definitely an XMIish thing so perhaps they're not
working nicely together because no one ever mixed them.<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite"><br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img
src="cid:part1.01090401.07010106@humanfactor.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</body>
</html>

--------------060600080407050901080205
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.01090401.07010106@humanfactor.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eLi/uorxXZ5ma6S4XY0O0B Qv2pvmEhz5Y4
G75QA1bwZqXiXVotQ1sWlkC8ccsFpctN+6jhu1DBmjUMS90AY2QoVQ7twYrQ BoaVo2vQ+J21
CZ7SygmcvfG1upJV1FhEI0YwSJiA4CtlJD90K2/hlAOsoAKACgAoAKACgAoA KACgCrqao1sg
kCkefERuOOfMXHcd8d/wPQgFqgAoAKACgCrIqf2rbsQu8QSgHPON0ee/sOx7 cjoQC1QBV1ZU
bSrxZQpQwOGDHAxtOc8r/MfUdaALVAFbUbxbC1M7xySgOiBI8bmLMFAGSB1I 71FSahHmY0ru
xkaj4ts9LDf2lbzWhWNpNsksG5gATgKJMknaQOOvFTTqOptF279PzB8sdOZX NfTb+11Sxhvd
PnWe2mXcjr0P+BB4IPIIINaiLNAFeO+t31GawSTN1BFHNIm0/Kjlwpz05Mb/ AJe4oAsUAFAB
QBT1jVLTRrBr2/eRIEdE/dxPKxZ3CKoRAWJLMBgA9aADStUtNVt2msnkIRyj pLE8MkbYBw8b
gMpwQQCBkMD0INAFygAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr37b IFO7b+9jGd2O
rrx94flnn0boQCxQAUAFABQBXdsajCu7GYpDt3deU5xu9+u09eozhgCxQA2R BJGyMWAYEHax
U/gRyPqKAIWs4m3Zacbs5xO467vfj75+ny/3RgA5vx5fnT7RLUeUIpY5rn9+ 8m6aWNkZII2V
1KuxY7cE42YCkdNqdGNVWku3/Dmc5uGxmeNLiy0ixU6Za3OtyOzwy2w1GSXK sJI2XaZdwbiT
kK2PLf7uMhUMNFy10CpUcVoX/Ec/2j4PatKLdLYNoc+2OMIEA8hsFQjMoUjB ADHAIqZx5ZNI
qLukzHufDl3LZ6hHpvhn+y9Gu/s6TaSkVkZWKGVnljjLNb7mZrcEuclYm4BW MmCjLh8GaqNE
1IXWhSXd9d6PdWGnyTm1M1hiS8MasQwVA8c8KARZUbSCFUCgDc8UeE5TLcQa Zo/2tZdPFvpl
yXRjpd3umZ7lmkYOrM0kTGSPfIxjJOSFyARt4PntrcXNppslrqFxqepve3Wn PFDeSW0ouzFi
UkZO5rcqGOFYITjbwAdB8P8ATJ9J0aaCfTLTTEa4ZoYobaKCRk2qA0yxMYzK SpyUO0jbwv3Q
AV9S0W7uvAOlaXp9nJpU8L6cfs8cyStZLHNCzAO+Vcxqh5IO7b0OcEAx/Fvg iWZ7R/8AiZaz
AzzS3qqljJNPOywpFK0c6CABI4mTKqGGRjO5yQAt/Bs8Oka9/aNvqVzeXT20 SSW13FPcTRJb
2qyANPtjId4mEm9V8xV+ZSNooAp3HhTVn0wxTeHrH7VNp5g002MUUMWi3Bkn bz9rOTExEkDM
YTId0TYztQsAbGjeFZdO1HT9Rg0yC2vn1q/mv7mIIsstrIbpow7Dl1Ja3O3n BC5A28AHcUAF
ABQAUAFABQAUAFABQAUAFABQAUAFAFe/DGBQpkU+bGfkJBxvXPQHj17Yzkgc gAsUAFABQAUA
Y66xazXEFzD9ueDymwVtJ9rbipBxsweAcHPGe+eADUtp47m3iuIG3RSoHRsE ZBGQeaAKN3qF
2movaWdpBL5cSSs0s5j+8XAAARv7h/OuapWcJcqV/n/wC1FWu2O06+uJ7y4t bu2igeGOOQGK
YyBgxcd1XH3D+dVSquo2mrWCUUldFxp4VuEt2ljE8iM6RlhuZVIDEDqQCygn tuHrW5BHBf2d
x9n+z3cEv2mIzwbJA3mxjbl1x95fnXkcfMPUUACX9m941nHdwNdJndCsgLrg ITlevAkjJ/31
9RQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACg CvfrugUbd372
M4256Opz90/njj1XqACxQAUAFABQB5/Z6fdDXdD1NtU1m3hstPaCW0XT8hWP 2clAfIJKN5Tb
ju3A7dpAzQB1mhWs8ejaesk88TLbxBoiqjaQqZXlc/wkevzN7YAM7UoGuPE1 wFsbO722cH/H
w23bl5unyt1x7dK46yXPd9v8y09CXw9EYNc1CM2ltaf6NbnZbtlT803P3V54 9O1VQSTdvL9Q
b0RX8eWeqeVaaj4dOzU4fMtFkCbyqTrsB24I2rMLeRjjhIn68q3UQc22ha1b 280ED3dsNKuL
TTNNltFPmQ2z3sckjISpDoLf7MjM4YboJQcjcXALCaXcRePo7i/TWW02zuJL azkSW5fBaHTz
GGKks0RaKcsz5j3Bt5yeQDH0y18WvZgTarrK30r2a34isp4/ImN3B5jI80jx sAvn58iMQlcl
ht2AgHrFtCttbxQRmQpEgRTJI0jEAY5ZiSx9yST3oAkoAKACgAoAKACgAoAK ACgAoAKACgAo
AKACgAoAKACgAoAKACgAoAq6mAbZMsq/v4uWVT/y0X+8QP6+mTgUAWqACgAo AKAMl9b0n7ZE
41HTyBG4L+dHlcleM7sjOOmDnA5GBkA1I5EljWSJ1dHAZWU5DA9CDQBja6/h tb6JNcisGuGi
LBrmFW2RqeWZiMIuTjJIGTjqaapOava4ua2hLoDaGWul0KG1haNwk6wQiI5x lSRgZBByp6EH
IJBodN0+lg5rmtSGFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUAFABQ AUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/ LPPo3QgFigAo
AKACgDz3T73UV1jQZYfEWkQaRDpxSe3kX5lb/R/lb98Mudsm19mEG4ENuoA6 zw8tz/YWmlZY
gn2aLCmIk42pxnd7N27j0OQDI8aaTZzzq8mnPdLeIYruNDMFnVcFA/lRPypO Q3ysMYBIJFU6
06aSX/DfgxcqZd8I6bb28Ut0tq8M5xApk8wmOFQNka70Qqi5wABz1JLEmpVa VSOqt9/36pDc<
Re: Resource URIs for FeatureMaps [message #506452 is a reply to message #506425] Thu, 07 January 2010 14:59 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33133
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------020107050109070508040501
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Scott,

I'm not sure what to suggest without seeing this in action. Perhaps
you want to open a bugzilla, assuming it's a problem, along with an
attachment that I'd need to see the problem in action.


Scott Dybiec wrote:
> Further debugging is indicating that the ContentTreeIterator cannot
> resolve FeatureMap proxies. Here's some tests I ran and the
> corresponding output from each:
>
> *Test 1:*
>
> Library library = loadLibrary(modelManager);
> logger.debug("*** Test 1: Direct access to feature map and derived
> lists");
> accessBorrowedBooks(library);
> accessReturnedBooks(library);
> accessAllBooksUsingFeatureMap(library);
>
> Output:
> *** Test 1: Direct access to feature map and derived lists
> getBorrowedBooks(): Found 0 proxied books and 2257 resolved books
> getReturnedBooks(): Found 0 proxied books and 20308 resolved books
> featureMap getBooks(): Found 0 proxied books and 22565 resolved books
>
> This test works as expected --- the proxies are resolved. It accesses
> the borrowed and returned books this way:
>
> int proxyBookCount = 0;
> int resolvedBookCount = 0;
> List<Book> books = library.getBorrowedBooks();
> for (Book book : books) {
> if (book.eIsProxy()) {
> proxyBookCount++;
> } else {
> resolvedBookCount++;
> }
> }
>
> and the FeatureMap this way:
>
> int proxyBookCount = 0;
> int resolvedBookCount = 0;
> for (Iterator<Entry> iterator = library.getBooks().listIterator();
> iterator.hasNext();) {
> Book book = (Book) iterator.next().getValue();
> if (book.eIsProxy()) {
> proxyBookCount++;
> } else {
> resolvedBookCount++;
> }
> }
>
>
> *Test 2:*
>
> logger.debug("*** Test 2: ContentTreeIterator access without
> resolving proxies");
> library = loadLibrary(modelManager);
> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
> false);
>
> Output:
> *** Test 2: ContentTreeIterator access without resolving proxies
> Found instance of
> com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl
> Found 22565 proxied books and 0 resolved books
> Found 7205 proxied writers and 0 resolved writers
>
> Test 2 and Test 3 are the same except for the 'resolveProxies' flag
> being send to the ContentTreeIterator. As expected, no proxies were
> resolved for either Writers or Books. Here's how the access takes
> place for both Test 2 and Test 3:
>
> int proxyBookCount = 0;
> int resolvedBookCount = 0;
> int proxyWriterCount = 0;
> int resolvedWriterCount = 0;
> for (Iterator<Object> iter = EcoreUtil.getAllContents(resourceSet,
> resolve); iter.hasNext();) {
> Object object = iter.next();
> if (object instanceof EObject) {
> EObject eObject = (EObject) object;
> if (eObject.eClass().getName().equals("Book")) {
> if (eObject.eIsProxy()) {
> proxyBookCount++;
> } else {
> resolvedBookCount++;
> }
> }
> if (eObject.eClass().getName().equals("Writer")) {
> if (eObject.eIsProxy()) {
> proxyWriterCount++;
> } else {
> resolvedWriterCount++;
> }
> }
> } else {
> logger.debug("Found instance of " +
> object.getClass().getName());
> }
> }
>
>
> *Test 3:*
>
> logger.debug("*** Test 3: ContentTreeIterator access with
> resolving proxies");
> library = loadLibrary(modelManager);
> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
> true);
>
> Output:
> *** Test 3: ContentTreeIterator access with resolving proxies
> Found instance of
> com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl
> Found 22565 proxied books and 0 resolved books
> Found 0 proxied writers and 14410 resolved writers
>
> This test failed to resolve FeatureMap-based Book proxies, but
> correctly resolved standard containment Writer proxies. I think this
> shows double the number of actual writers because the tree iterator is
> following the author reference in Books to Writer.
>
> I tried tracing the ContentTreeIterator code down, but got lost in the
> tangled web of anonymous classes in this part of the EMF framework.
>
> Where would you recommend I go next?
>
> $cott
>
> Ed Merks wrote:
>> Scott,
>>
>> Comments below.
>>
>> Scott Dybiec wrote:
>>> Yes, the debugger has become my best friend trying to solve this :-)
>> You've seen my best friend suggestions in the past hey? :-P
>>> I've found that the reason that EObject.eResource() for the book is
>>> returning the library's root resource URI pointing to the file
>>> gutenberg.library, is because the book is an unresolved proxy. This
>>> is baffling since after loading the root model and before I query
>>> the book object, I call:
>>>
>>> EcoreUtil.resolveAll(domain.getResourceSet());
>>>
>>> which I verified works fine resolving the Writer proxies, /but not
>>> the Books proxies/.
>>>
>>> I also tried iterating through the graph using:
>>>
>>> EcoreUtil.getAllContents(domain.getResourceSet(), true)
>>>
>>> which is supposed to resolve all proxies in the ResourceSet, but
>>> doesn't for any of the books proxies.
>>>
>>> Interestingly, running:
>>>
>>> EObject resolvedEObject = EcoreUtil.resolve(eObject,
>>> domain.getResourceSet());
>>>
>>> for each proxied Book does properly find the Book resource and
>>> resolve the Book object.
>>>
>>> Something is special about the borrowedBooks and returnedBooks
>>> references making them 'invisible' to the EcoreUtil.resolveAll() and
>>> EcoreUtil.getAllContents() proxy resolution techniques.
>>>
>>> Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?
>> Whenever the model resolves proxies, it goes through this method of
>> BasicEObjectImpl:
>>
>> public EObject eResolveProxy(InternalEObject proxy)
>> {
>> return EcoreUtil.resolve(proxy, this);
>> }
>>
>> It will be interesting to note why this fails when you call the
>> accessor to pull a book out of one of the lists. Is it even being
>> invoked. FeatureMaps are kind of an XMLish thing while cross
>> resource containment is definitely an XMIish thing so perhaps they're
>> not working nicely together because no one ever mixed them.
>>>
>>> $cott
>>>
>>>
>>> Ed Merks wrote:
>>>> Scott,
>>>>
>>>> Have you stepped through the call to eResource with the debugger?
>>>> It's pretty clear that the EMF framework can determine the URI of
>>>> the book because of this serialization:
>>>>
>>>> <borrowedBooks href="Book/model.xmi#/0"/>
>>>>
>>>> But it does that by calling eResource so I don't understand how
>>>> it's possible that the correct serialization is produced by
>>>> eResource itself is returning the wrong information. Perhaps
>>>> you're calling it before you've actually put the other objects in a
>>>> resource... Or perhaps your calling eResource() on an unresolved
>>>> proxy...
>>>>
>>>>
>>>> Scott Dybiec wrote:
>>>>> Comments below.
>>>>>
>>>>> Ed Merks wrote:
>>>>>> Scott,
>>>>>>
>>>>>> Comments below.
>>>>>>
>>>>>>
>>>>>> Scott Dybiec wrote:
>>>>>>> I'm trying to determine the Resource URIs for the EObjects in my
>>>>>>> model. My model is divided among multiple file-based Resources
>>>>>>> in a ResourceSet partitioned around containment relationships.
>>>>>>>
>>>>>>> My test example uses the extended Library model with Writer and
>>>>>>> Books stored each in their own resources --- separate from the
>>>>>>> library root resource. The extended Library ecore model
>>>>>>> screenshot is attached. In this model, the 'books' reference is
>>>>>>> a EFeatureMapEntry.
>>>>>>>
>>>>>>> EObject.eResource().getURI() works fine for the standard
>>>>>>> containment relationships with direct containment references
>>>>>>> like Writer, but I can't find a method to determine the Resource
>>>>>>> URI that works for references contained in FeatureMaps, like
>>>>>>> books, borrowedBooks and returnedBooks. When I query the
>>>>>>> Book.eResource.getURI, it returns the Library's Resource URI,
>>>>>>> not the URI of the Resource where the Book is actually contained.
>>>>>> Where are books actually contained if not the library? I ask
>>>>>> because I don't see any other Book references. Are borrowedBooks
>>>>>> and returnedBooks containment references?
>>>>> Yes, both borrowedBooks and returnedBooks are multiplity-many
>>>>> containment references.
>>>>>> Are books supposed to be in their own resource?
>>>>> Yes. All the books are currently in their own resource. The
>>>>> Books/model.xmi file looks like this:
>>>>>
>>>>> <?xml version="1.0" encoding="ASCII"?>
>>>>> <xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0">
>>>>> <com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography">
>>>>> <author href="../Writer/model.xmi#/0"/>
>>>>> </com.humanfactor.emf.modelmanager.test.library:Book>
>>>>> <com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction">
>>>>> <author href="../Writer/model.xmi#/1"/>
>>>>> .....
>>>>>
>>>>>
>>>>> And here's an excerpt from the middle of the library's root
>>>>> resource with references to the books resource:
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>> <com.humanfactor.emf.modelmanager.test.library:Library xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:com.humanfactor.emf.modelmanager.test.library="http://www.humanfactor.com/Library/2.1.0" name="Project Gutenberg eBook Library">
>>>>> <writers href="Writer/model.xmi#/0"/>
>>>>> <writers href="Writer/model.xmi#/1"/>
>>>>> ....
>>>>> <writers href="Writer/model.xmi#/7212"/>
>>>>> <writers href="Writer/model.xmi#/7213"/>
>>>>> <borrowedBooks href="Book/model.xmi#/0"/>
>>>>> <returnedBooks href="Book/model.xmi#/1"/>
>>>>> <returnedBooks href="Book/model.xmi#/2"/>
>>>>> <returnedBooks href="Book/model.xmi#/3"/>
>>>>> <returnedBooks href="Book/model.xmi#/4"/>
>>>>> <returnedBooks href="Book/model.xmi#/5"/>
>>>>> ....
>>>>>
>>>>>
>>>>>> If both the answers are yes, are those containment references
>>>>>> proxy resolving and you've set the GenModel's Containment Proxies
>>>>>> to true to support cross resource containment?
>>>>> Yes, both the GenModel Containment Proxies is set to true and the
>>>>> borrowedbooks and returnedbooks references have the
>>>>> 'resolveProxies' properties set to true. All proxied references
>>>>> resolve as expected and the model works fine ---- except that
>>>>> EObject.eResource().getURI() for Books doesn't return what I'd
>>>>> expect --- the URI for the 'Book/model.xmi'. Instead, it returns
>>>>> the Library Resource URI instead.
>>>>>>>
>>>>>>> How do I determine the Resource URI is this scenario?
>>>>>>>
>>>>>>> $cott
>>>>>>>
>>>>>>> ------------------------------------------------------------ ------------
>>>>>>>
>>>>>
>>>
>

--------------020107050109070508040501
Content-Type: multipart/related;
boundary="------------050805000704010207070906"


--------------050805000704010207070906
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Scott,<br>
<br>
I'm not sure what to suggest without seeing this in action.&nbsp;&nbsp; Perhaps
you want to open a bugzilla, assuming it's a problem, along with an
attachment that I'd need to see the problem in action.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi4pap$bhv$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Further debugging is indicating that the ContentTreeIterator cannot
resolve FeatureMap proxies. Here's some tests I ran and the
corresponding output from each:<br>
<br>
<b>Test 1:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">Library
library = loadLibrary(modelManager);</font><br>
<font face="Courier New, Courier, monospace">logger.debug("*** Test
1: Direct access to feature map and derived lists");</font><br>
<font face="Courier New, Courier, monospace">accessBorrowedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessReturnedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessAllBooksUsingFeatureMap(library);</font></small ><br>
<br>
Output: <br>
*** Test 1: Direct access to feature map and derived lists<br>
getBorrowedBooks(): Found 0 proxied books and 2257 resolved books<br>
getReturnedBooks(): Found 0 proxied books and 20308 resolved books<br>
featureMap getBooks(): Found 0 proxied books and 22565 resolved books<br>
</blockquote>
This test works as expected --- the proxies are resolved. It accesses
the borrowed and returned books this way:<br>
<blockquote><font face="Courier New, Courier, monospace"><small>int
proxyBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>int
resolvedBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>List&lt;Book&gt;
books = library.getBorrowedBooks();</small></font><br>
<font face="Courier New, Courier, monospace"><small>for (Book book
:
books) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; } else {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; }</small></font><br>
<font face="Courier New, Courier, monospace"><small>}</small></font><br>
<br>
and the FeatureMap this way:<br>
<br>
<small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Entry&gt; iterator = library.getBooks().listIterator();
iterator.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Book book =
(Book) iterator.next().getValue();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 2:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 2: ContentTreeIterator access without resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
false);</font></small><br>
<br>
Output: <br>
*** Test 2: ContentTreeIterator access without resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 7205 proxied writers and 0 resolved writers<br>
</blockquote>
Test 2 and Test 3 are the same except for the 'resolveProxies' flag
being send to the ContentTreeIterator. As expected, no proxies were
resolved for either Writers or Books. Here's how the access takes place
for both Test 2 and Test 3:<br>
<blockquote><small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
proxyWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Object&gt; iter = EcoreUtil.getAllContents(resourceSet,
resolve); iter.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Object
object
= iter.next();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if (object
instanceof EObject) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; EObject
eObject = (EObject) object;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Book")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Writer")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
logger.debug("Found instance of " + object.getClass().getName());</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 3:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 3: ContentTreeIterator access with resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
true);</font></small><br>
<br>
Output: <br>
*** Test 3: ContentTreeIterator access with resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 0 proxied writers and 14410 resolved writers<br>
</blockquote>
This test failed to resolve FeatureMap-based Book proxies, but
correctly resolved standard containment Writer proxies. I think this
shows double the number of actual writers because the tree iterator is
following the author reference in Books to Writer.<br>
<br>
I tried tracing the ContentTreeIterator code down, but got lost in the
tangled web of anonymous classes in this part of the EMF framework. <br>
<br>
Where would you recommend I go next?<br>
<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi03m6$uq$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
Yes, the debugger has become my best friend trying to solve this :-) </blockquote>
You've seen my best friend suggestions in the past hey? :-P<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">I've
found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(),
true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject = EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
</blockquote>
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:<br>
<blockquote>&nbsp; public EObject eResolveProxy(InternalEObject proxy)<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; return EcoreUtil.resolve(proxy, this);<br>
&nbsp; }<br>
</blockquote>
It will be interesting to note why this fails when you call the
accessor to pull a book out of one of the lists.&nbsp; Is it even being
invoked.&nbsp; FeatureMaps are kind of an XMLish thing while cross resource
containment is definitely an XMIish thing so perhaps they're not
working nicely together because no one ever mixed them.<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite"><br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img src="cid:part1.07050400.07070801@gmail.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</body>
</html>

--------------050805000704010207070906
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.07050400.07070801@gmail.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLW


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Resource URIs for FeatureMaps [message #506636 is a reply to message #506452] Fri, 08 January 2010 12:48 Go to previous messageGo to next message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030805050705060302060709
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ed,<br>
<br>
To enable you to see the problem in action, I spent a couple hours
extracting the code from my mainline project code and made it into a
separate Eclipse project. I submitted the problem to bugzilla and
attached the zipped-up project to the bug record.<br>
<br>
<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=299121">https://bugs.eclipse.org/bugs/show_bug.cgi?id=299121</a><br>
<br>
I wrote the code as a JUnit test that describes the proxy resolution
behavior I was expecting from the ContentTreeIterator. The project
contains two different instances of the extended Library model, both
with exactly the same data. <br>
<ol>
<li>the whole model contained in one resource file called
'monolithic-gutenberg.library'</li>
<li>a multi-resource partitioned instance of the model spread among
three resources: 'partitioned-gutenberg.library', 'Book/model.xmi' and
'Writer/model.xmi'<br>
</li>
</ol>
The test also checks for EObject.eContainer() == null for resolved
FeatureMap references, which is another problem I ran into.<br>
<br>
Let me know what you find out.<br>
&nbsp;<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi4ssr$fn3$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Scott,<br>
<br>
I'm not sure what to suggest without seeing this in action.&nbsp;&nbsp; Perhaps
you want to open a bugzilla, assuming it's a problem, along with an
attachment that I'd need to see the problem in action.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi4pap$bhv$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Further debugging is indicating that the ContentTreeIterator cannot
resolve FeatureMap proxies. Here's some tests I ran and the
corresponding output from each:<br>
<br>
<b>Test 1:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">Library
library = loadLibrary(modelManager);</font><br>
<font face="Courier New, Courier, monospace">logger.debug("***
Test
1: Direct access to feature map and derived lists");</font><br>
<font face="Courier New, Courier, monospace">accessBorrowedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessReturnedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessAllBooksUsingFeatureMap(library);</font></small ><br>
<br>
Output: <br>
*** Test 1: Direct access to feature map and derived lists<br>
getBorrowedBooks(): Found 0 proxied books and 2257 resolved books<br>
getReturnedBooks(): Found 0 proxied books and 20308 resolved books<br>
featureMap getBooks(): Found 0 proxied books and 22565 resolved books<br>
</blockquote>
This test works as expected --- the proxies are resolved. It accesses
the borrowed and returned books this way:<br>
<blockquote><font face="Courier New, Courier, monospace"><small>int
proxyBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>int
resolvedBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>List&lt;Book&gt;
books = library.getBorrowedBooks();</small></font><br>
<font face="Courier New, Courier, monospace"><small>for (Book
book
:
books) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; } else {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; }</small></font><br>
<font face="Courier New, Courier, monospace"><small>}</small></font><br>
<br>
and the FeatureMap this way:<br>
<br>
<small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Entry&gt; iterator = library.getBooks().listIterator();
iterator.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Book book
=
(Book) iterator.next().getValue();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 2:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 2: ContentTreeIterator access without resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
false);</font></small><br>
<br>
Output: <br>
*** Test 2: ContentTreeIterator access without resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 7205 proxied writers and 0 resolved writers<br>
</blockquote>
Test 2 and Test 3 are the same except for the 'resolveProxies' flag
being send to the ContentTreeIterator. As expected, no proxies were
resolved for either Writers or Books. Here's how the access takes place
for both Test 2 and Test 3:<br>
<blockquote><small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
proxyWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Object&gt; iter = EcoreUtil.getAllContents(resourceSet,
resolve); iter.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Object
object
= iter.next();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(object
instanceof EObject) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
EObject
eObject = (EObject) object;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Book")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Writer")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
proxyWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
resolvedWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
logger.debug("Found instance of " + object.getClass().getName());</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 3:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 3: ContentTreeIterator access with resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
true);</font></small><br>
<br>
Output: <br>
*** Test 3: ContentTreeIterator access with resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 0 proxied writers and 14410 resolved writers<br>
</blockquote>
This test failed to resolve FeatureMap-based Book proxies, but
correctly resolved standard containment Writer proxies. I think this
shows double the number of actual writers because the tree iterator is
following the author reference in Books to Writer.<br>
<br>
I tried tracing the ContentTreeIterator code down, but got lost in the
tangled web of anonymous classes in this part of the EMF framework. <br>
<br>
Where would you recommend I go next?<br>
<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi03m6$uq$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
Yes, the debugger has become my best friend trying to solve this :-) </blockquote>
You've seen my best friend suggestions in the past hey? :-P<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite">I've
found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(),
true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject =
EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
</blockquote>
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:<br>
<blockquote>&nbsp; public EObject eResolveProxy(InternalEObject proxy)<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; return EcoreUtil.resolve(proxy, this);<br>
&nbsp; }<br>
</blockquote>
It will be interesting to note why this fails when you call the
accessor to pull a book out of one of the lists.&nbsp; Is it even being
invoked.&nbsp; FeatureMaps are kind of an XMLish thing while cross resource
containment is definitely an XMIish thing so perhaps they're not
working nicely together because no one ever mixed them.<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org" type="cite"><br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager..test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img
src="cid:part1.07090900.01080203@humanfactor.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</body>
</html>

--------------030805050705060302060709
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.07090900.01080203@humanfactor.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2tLmN7izfZcQfdkhOSBuQ8gNglSRhhy Mgg0AU/E3ijR
/DEEEus30Ft9olSKNJJURm3OqFgGIyq7wzEdFyaAMvRPiFoOrXtrCt7aWyX1 lbXVn591Gsk7
SvKhiCZ5dGjAIBPzNjtyAdBFq2my6pNpcOoWj6hAm+W0WZTNGvHzMmcgfMvJ HcetAGePFOm3
MuljSLq01SC/vWs2mtbhZFiZYJJuSuQTiMDGR94H6gFyPXdHkvLWzj1Wxe6v YhPbQrcIXnjI
JDoucsuATkccGgDQoAKACgAoAKACgAoAKACgCvfrugUbd372M4256Opz90/n jj1XqACxQAUA
FABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s8H jG1s/TafoelA
FigAoAKACgCOeCG4XZPFHKozw6hhyCD19iR9CaAI2sLNt260gO7OcxjnO7P5 73/76b1NAHN3
ng2S4upZTeWzI8juEltnbAZ2facSAMMseoq41JRVos0jUcVZEJ8DSYcJeWcI dWQiGzdAAylT
hfN2g4J7U3Um1ytjdWTVmaXjWOeK1sNVtI/Pm0i7+0rb7JW87dFJCV/dI7jA m3ZCN93BwCWG
Zkcv4d8G3mpaVrlzqsMFhca7p9xaRttMktss11eSk4ZVbaVnhO07WJXDKpGK ANS40DXrvW4/
EUsOmxahbPCIrFbuRoZFSO6TLTeUCpP2tjgRt/qwM/NlQDDtvDHiRrjxBpMl nYxx61p7R3N1
9pkKW/n3V858r91++ZFnBKkx/wAPIDZAB6JfaZBfXFrPNJdo9q++MQXcsKsc g/OqMA44HDAj
r6nIBlz6BcanrltqWrzwIunys1lDaxAOoPBLzMN/zBVJWPyxyyN5q9QDL+If g/U/FdxZx22r
yWmnojLPAPLGS5ETspMbHJt5bleuN3lkAcmgA8QeGtavbjVLe1ktLi01fR4d Lnu7qcpPEVM4
aURpFsckT525QZBHAOQAV9U8FalqllPoss9pb6eL
Re: Resource URIs for FeatureMaps [message #506758 is a reply to message #506636] Sat, 09 January 2010 15:31 Go to previous message
Scott Dybiec is currently offline Scott DybiecFriend
Messages: 148
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040304010702070706010907
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ed,<br>
<br>
Applied the patches you attached to the bug record. They worked well.<br>
<br>
Amazing you can create that much high-quality code that quickly. <br>
<br>
Thanks a ton.<br>
<br>
$cott<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi79im$lkj$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
Ed,<br>
<br>
To enable you to see the problem in action, I spent a couple hours
extracting the code from my mainline project code and made it into a
separate Eclipse project. I submitted the problem to bugzilla and
attached the zipped-up project to the bug record.<br>
<br>
<a moz-do-not-send="true"
href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=299121">https://bugs.eclipse.org/bugs/show_bug.cgi?id=299121</a><br>
<br>
I wrote the code as a JUnit test that describes the proxy resolution
behavior I was expecting from the ContentTreeIterator. The project
contains two different instances of the extended Library model, both
with exactly the same data. <br>
<ol>
<li>the whole model contained in one resource file called
'monolithic-gutenberg.library'</li>
<li>a multi-resource partitioned instance of the model spread among
three resources: 'partitioned-gutenberg.library', 'Book/model.xmi' and
'Writer/model.xmi'<br>
</li>
</ol>
The test also checks for EObject.eContainer() == null for resolved
FeatureMap references, which is another problem I ran into.<br>
<br>
Let me know what you find out.<br>
&nbsp;<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi4ssr$fn3$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
I'm not sure what to suggest without seeing this in action.&nbsp;&nbsp; Perhaps
you want to open a bugzilla, assuming it's a problem, along with an
attachment that I'd need to see the problem in action.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi4pap$bhv$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Further debugging is indicating that the ContentTreeIterator cannot
resolve FeatureMap proxies. Here's some tests I ran and the
corresponding output from each:<br>
<br>
<b>Test 1:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">Library
library = loadLibrary(modelManager);</font><br>
<font face="Courier New, Courier, monospace">logger.debug("***
Test
1: Direct access to feature map and derived lists");</font><br>
<font face="Courier New, Courier, monospace">accessBorrowedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessReturnedBooks(library);</font><br>
<font face="Courier New, Courier, monospace">accessAllBooksUsingFeatureMap(library);</font></small ><br>
<br>
Output: <br>
*** Test 1: Direct access to feature map and derived lists<br>
getBorrowedBooks(): Found 0 proxied books and 2257 resolved books<br>
getReturnedBooks(): Found 0 proxied books and 20308 resolved books<br>
featureMap getBooks(): Found 0 proxied books and 22565 resolved books<br>
</blockquote>
This test works as expected --- the proxies are resolved. It accesses
the borrowed and returned books this way:<br>
<blockquote><font face="Courier New, Courier, monospace"><small>int
proxyBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>int
resolvedBookCount = 0;</small></font><br>
<font face="Courier New, Courier, monospace"><small>List&lt;Book&gt;
books = library.getBorrowedBooks();</small></font><br>
<font face="Courier New, Courier, monospace"><small>for (Book
book
:
books) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; } else {</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</small></font><br>
<font face="Courier New, Courier, monospace"><small>&nbsp;&nbsp;&nbsp; }</small></font><br>
<font face="Courier New, Courier, monospace"><small>}</small></font><br>
<br>
and the FeatureMap this way:<br>
<br>
<small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Entry&gt; iterator = library.getBooks().listIterator();
iterator.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Book
book
=
(Book) iterator.next().getValue();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(book.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 2:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 2: ContentTreeIterator access without resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
false);</font></small><br>
<br>
Output: <br>
*** Test 2: ContentTreeIterator access without resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 7205 proxied writers and 0 resolved writers<br>
</blockquote>
Test 2 and Test 3 are the same except for the 'resolveProxies' flag
being send to the ContentTreeIterator. As expected, no proxies were
resolved for either Writers or Books. Here's how the access takes place
for both Test 2 and Test 3:<br>
<blockquote><small><font face="Courier New, Courier, monospace">int
proxyBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedBookCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
proxyWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">int
resolvedWriterCount = 0;</font></small><br>
<small><font face="Courier New, Courier, monospace">for
(Iterator&lt;Object&gt; iter = EcoreUtil.getAllContents(resourceSet,
resolve); iter.hasNext();) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; Object
object
= iter.next();</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; if
(object
instanceof EObject) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
EObject
eObject = (EObject) object;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Book")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
proxyBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
}
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp;
resolvedBookCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
}</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if
(eObject.eClass().getName().equals("Writer")) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
if
(eObject.eIsProxy()) {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
proxyWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
}
else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;
resolvedWriterCount++;</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
}</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; } else {</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
logger.debug("Found instance of " + object.getClass().getName());</font></small><br>
<small><font face="Courier New, Courier, monospace">&nbsp;&nbsp;&nbsp; }</font></small><br>
<small><font face="Courier New, Courier, monospace">}</font></small><br>
</blockquote>
<br>
<b>Test 3:</b><br>
<blockquote><small><font face="Courier New, Courier, monospace">logger.debug("***
Test 3: ContentTreeIterator access with resolving proxies");</font></small><br>
<small><font face="Courier New, Courier, monospace">library =
loadLibrary(modelManager);</font></small><br>
<small><font face="Courier New, Courier, monospace"> accessAllBooksUsingContentTreeIterator(modelManager.getResou rceSet(),
true);</font></small><br>
<br>
Output: <br>
*** Test 3: ContentTreeIterator access with resolving proxies<br>
Found instance of
com.humanfactor.emf.modelmanager.test.model.library210.util. LibraryResourceImpl <br>
Found 22565 proxied books and 0 resolved books<br>
Found 0 proxied writers and 14410 resolved writers<br>
</blockquote>
This test failed to resolve FeatureMap-based Book proxies, but
correctly resolved standard containment Writer proxies. I think this
shows double the number of actual writers because the tree iterator is
following the author reference in Books to Writer.<br>
<br>
I tried tracing the ContentTreeIterator code down, but got lost in the
tangled web of anonymous classes in this part of the EMF framework. <br>
<br>
Where would you recommend I go next?<br>
<br>
$cott<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hi03m6$uq$1@build.eclipse.org" type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
<title></title>
Yes, the debugger has become my best friend trying to solve this :-) </blockquote>
You've seen my best friend suggestions in the past hey? :-P<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org"
type="cite">I've
found that the reason that EObject.eResource() for the book is
returning the library's root resource URI pointing to the file
gutenberg.library, is because the book is an unresolved proxy. This is
baffling since after loading the root model and before I query the book
object, I call:<br>
<blockquote>EcoreUtil.resolveAll(domain.getResourceSet());<br >
</blockquote>
which I verified works fine resolving the Writer proxies, <i>but not
the Books proxies</i>.<br>
<br>
I also tried iterating through the graph using:<br>
<blockquote>EcoreUtil.getAllContents(domain.getResourceSet(),
true)<br>
</blockquote>
which is supposed to resolve all proxies in the ResourceSet, but
doesn't for any of the books proxies.<br>
<br>
Interestingly, running:<br>
<blockquote>EObject resolvedEObject =
EcoreUtil.resolve(eObject,
domain.getResourceSet());<br>
</blockquote>
for each proxied Book does properly find the Book resource and resolve
the Book object.<br>
<br>
Something is special about the borrowedBooks and returnedBooks
references making them 'invisible' to the EcoreUtil.resolveAll() and
EcoreUtil.getAllContents() proxy resolution techniques.<br>
<br>
Why isn't EcoreUtil.resolveAll() working, while Ecore.resolve() does?<br>
</blockquote>
Whenever the model resolves proxies, it goes through this method of
BasicEObjectImpl:<br>
<blockquote>&nbsp; public EObject eResolveProxy(InternalEObject
proxy)<br>
&nbsp; {<br>
&nbsp;&nbsp;&nbsp; return EcoreUtil.resolve(proxy, this);<br>
&nbsp; }<br>
</blockquote>
It will be interesting to note why this fails when you call the
accessor to pull a book out of one of the lists.&nbsp; Is it even being
invoked.&nbsp; FeatureMaps are kind of an XMLish thing while cross resource
containment is definitely an XMIish thing so perhaps they're not
working nicely together because no one ever mixed them.<br>
<blockquote cite="mid:hi002v$3ud$1@build.eclipse.org"
type="cite"><br>
$cott<br>
<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvl5i$frf$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Have you stepped through the call to eResource with the debugger?&nbsp; It's
pretty clear that the EMF framework can determine the URI of the book
because of this serialization:<br>
<blockquote>
<pre>&lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
</blockquote>
But it does that by calling eResource so I don't understand how it's
possible that the correct serialization is produced by eResource itself
is returning the wrong information.&nbsp; Perhaps you're calling it before
you've actually put the other objects in a resource...&nbsp; Or perhaps your
calling eResource() on an unresolved proxy...<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvkec$mvc$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Comments below.<br>
<br>
Ed Merks wrote:
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<meta content="text/html;charset=ISO-8859-1"
http-equiv="Content-Type">
Scott,<br>
<br>
Comments below.<br>
<br>
<br>
Scott Dybiec wrote:
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite">I'm
trying to determine the Resource URIs for the EObjects in my model. My
model is divided among multiple file-based Resources in a ResourceSet
partitioned around containment relationships. <br>
<br>
My test example uses the extended Library model with Writer and Books
stored each in their own resources --- separate from the library root
resource. The extended Library ecore model screenshot is attached. In
this model, the 'books' reference is a EFeatureMapEntry. <br>
<br>
EObject.eResource().getURI() works fine for the standard containment
relationships with direct containment references like Writer, but I
can't find a method to determine the Resource URI that works for
references contained in FeatureMaps, like books, borrowedBooks and
returnedBooks. When I query the Book.eResource.getURI, it returns the
Library's Resource URI, not the URI of the Resource where the Book is
actually contained. <br>
</blockquote>
Where are books actually contained if not the library?&nbsp; I ask because I
don't see any other Book references.&nbsp; Are borrowedBooks and
returnedBooks containment references?</blockquote>
Yes, both borrowedBooks and returnedBooks are multiplity-many
containment references.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">&nbsp;
Are
books supposed to be in
their own resource?</blockquote>
Yes. All the books are currently in their own resource. The
Books/model.xmi file looks like this:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="ASCII"?&gt;</pre>
<pre>&lt;xmi:XMI xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager.test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a>&gt;</pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="A Study of Fairy Tales" pages="102" category="Biography"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;/com.humanfactor.emf.modelmanager.test.library:Book& amp;gt; </pre>
<pre>&nbsp; &lt;com.humanfactor.emf.modelmanager.test.library:Book title="The Ladies&amp;#xA;A Shining Constellation of Wit and Beauty" pages="224" category="ScienceFiction"&gt;</pre>
<pre>&nbsp;&nbsp;&nbsp; &lt;author href="../Writer/model.xmi#/1"/&gt;
......

</pre>
And here's an excerpt from the middle of the library's root resource
with references to the books resource:<br>
<br>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre> &lt;com.humanfactor.emf.modelmanager.test.library:Librar y xmi:version="2.0" xmlns:xmi=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.omg.org/XMI">"http://www.omg.org/XMI"</a> xmlns:com.humanfactor.emf.modelmanager..test.library=<a
moz-do-not-send="true" class="moz-txt-link-rfc2396E"
href="http://www.humanfactor.com/Library/2.1.0">"http://www.humanfactor.com/Library/2.1.0"</a> name="Project Gutenberg eBook Library"&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/1"/&gt;</pre>
<pre>....
&lt;writers href="Writer/model.xmi#/7212"/&gt;</pre>
<pre>&nbsp; &lt;writers href="Writer/model.xmi#/7213"/&gt;</pre>
<pre>&nbsp; &lt;borrowedBooks href="Book/model.xmi#/0"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/1"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/2"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/3"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/4"/&gt;</pre>
<pre>&nbsp; &lt;returnedBooks href="Book/model.xmi#/5"/&gt;
.....
</pre>
<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">If
both the answers are yes, are those containment
references proxy resolving and you've set the GenModel's Containment
Proxies to true to support cross resource containment?<br>
</blockquote>
Yes, both the GenModel Containment Proxies is set to true and the
borrowedbooks and returnedbooks references have the 'resolveProxies'
properties set to true. All proxied references resolve as expected and
the model works fine ---- except that EObject.eResource().getURI() for
Books doesn't return what I'd expect --- the URI for the
'Book/model.xmi'. Instead, it returns the Library Resource URI instead.<br>
<blockquote cite="mid:hhvif7$c24$1@build.eclipse.org"
type="cite">
<blockquote cite="mid:hhvhds$720$1@build.eclipse.org"
type="cite"><br>
How do I determine the Resource URI is this scenario? <br>
<br>
$cott <br>
<br>
<hr size="4" width="90%"><br>
<center><img
src="cid:part1.02000407.09040400@humanfactor.com"></center>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>

--------------040304010702070706010907
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <part1.02000407.09040400@humanfactor.com>

/9j/4AAQSkZJRgABAAEAYABgAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/
2wCEAAgFBgcGBQgHBgcJCAgJDBQNDAsLDBgREg4UHRkeHhwZHBsgJC4nICIr IhscKDYoKy8x
MzQzHyY4PDgyPC4yMzEBCAkJDAoMFw0NFzEhHCExMTExMTExMTExMTExMTEx MTExMTExMTEx
MTExMTExMTExMTExMTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYH
CAkKCwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUE BAAAAX0BAgMA
BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp KjQ1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX mJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+foRAAIB
AgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/AABEIAWMBGgMBEQACEQEDEQH/2gAMAwEAAhEDEQA/ APd79tkCndt/
exjO7HV14+8Pyzz6N0IBYoAzddv30+GB1uLa1R5GEs9yMpEixu5Y/MuPudSc AZoAydK8R2tx
PELLxBo2qW3msLg2j7jCCkkgJbzW2j5DgHjAOOlAHQte2qRzSNcwqkCl5WMg AjUEglj2AKt1
/un0oA8wHxJ1JrqBvtOmorQMxi8psFsrjJ3ZyMHGDjk5BwMep9UprTU7/q8N tT0fQNRXVdEs
r9Xic3EKuxiOVDY+YD6HIx2xXnVI8k3FdDinHlk0ckPH8kV7bQXMMbA6nPbT LbW888wiV75I
yI0UnJNmuSC3V8qoAJgk6Sy8U6NfajDp9peeZeTRecsAicOqZdSWGPk2tG6N uxtbCthmUEAr
v410GKJXuLqe2Z5RCkNxZzQzO7K7IBEyBzuEbhcD5mUquW4oAuSa/Yi3jlt2 kuXnuJ7SCKNc
NNPEJd8Y3YAP7mQZYheOvIoAx73xdfaZo2v3V9o0ct3oluLh4bG782JwVLbT I6JtdVXcy7SQ
jIRuLBaALHiPxRNpFxfLb2EdzBpVkuoX7vcGNlhJkx5ShWDviGThig+783J2 gHSUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux 1dePvD8s8+jd
CAWKAKepWk1ybZ7aaOGW2l8xTJGXU/Iy4IDD+969qAIRZX8t3ay3d5bOltIZ AkVsyFiUZepc
/wB70oA0qAPOx8Nr2O4hEes2/kxwtHua0+YcrgY34PAOTkYwODnjv+uL+X8T r+srsd1pVmNO
0u0sg5kFtCkW8jG7aoGcfhXFOXNJvuc0nzNs5EeAry21ZdT03WYIrpLtrlBP ZGRBukvmKkCR
SeL4jOR/q8/xYEkmhpXg77CuqZ1OcSapaeTLLbL5LxSNNcyvJGcnb81020HJ XaMljzQBn6D8
Pv7L16HVfO0q38qWKT7Ppml/Y4m2RXUeSPMb5j9qzu9IwMc5ABoL4euJNe1/ U7dv7MuriI29
jcYE212ijD3G0nHJjhTYw/5dsj/WGgCN/C+qy+DtT8PS6ppqJeW7W8csGnyj yxJu81n3TsZH
bcTuLA7iWbdk0ASa34VvNV+07tTgi/tTT00/U8WhPmRr5nMP7z90x86TlvMH 3eODuAOooAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt3fv Yzjbno6nP3T+
eOPVeoALFABQAUAFAGLZ3Op3sdrqEdhZqJIMoGuzna+1uT5WR0HAOPrgYANL Tbr7bp1td7PL
8+JZNuc7dwBxn8aAMnVLuZdaktxe3lvElvG4W2txJks0gJPyNj7o9O9cVac1 Oydlb/PyNI25
b2JNCuppdRvIHurm4jjiidftEIjZSxkB4CrkfKO1Vh5ybak77fqEkrJpDtb1 46ZqNpYW+lX2
p3V3FLMqWhhXYkZjDEmSRB1lXGM966zMksvEmi3r2EVvqloZ9Rt1urSBpQk0 0TKWDrGcNjAJ
6dj6GgCvqHinTYIpTp91aahPbXttZ3EMFwpaBpp1h+cDJUgsTggZ2kcdgDYt 54bhC9vLHKgd
kLIwYBlYqw47hgQR2IIoAkoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAo
AKAK9+u6BRt3fvYzjbno6nP3T+eOPVeoALFABQAUAFAHI23hmCG4s5rjwxoN zqUEce2+cZkL
RhVVt/kkgjC45zxx0oA3tL0uG1060hnggeeGKNXcIDllCDOSM9UX/vlfQUAZ Wrs8HiKaQyaj
BG9pCqvaWjTBiHlyCRG2CMj061y1YvnulcpbEvhwvJq9/MWvpIzBAqyXdsYS SGlJABRc4yO3
eqoxabbVgexT8Z+G5tY1nS71dG0bWYLS3uInttUkKKGkaEq6/upBkCJh0H3u tdBJTs/COsWs
S6dJeQX1rNd2N7c6hNK4uDJbLbgjy9rBt5tgSxkBHmHhtvzAFOTwLqt3p2k6 ddyWkUGi28Fl
DLBcyiS6iS4tZHkJCqYX2WvAVm+Z/vDbkgHaaDZ3GnacljcGBo7XEVu8KCPd EANu5AAqMPuk
L8p25AUHYoBoUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFAFXU1RrZ
BIFI8+Ijccc+YuO4747/AIHoQC1QAUAFABQBXdsajCu7GYpDt3deU5xu9+u0 9eozhgCxQBk6
1qq2sd3CYZcQ23nSzh0RIUO4bmZpEIxsYkgjAHUUAWrK/NzcTW8lpPayxIjl ZShyGLAEbWP9
00AWLieG1haa5ljhiX7zyMFUduSaUpKKu3YaTeiKsWtaVLIscWp2Tu5Cqqzo SxPQAZrNVqbd
lJfePkkuhNqV9b6Zp1zf30nlWtpE80z7S21FBLHA5OAD0rUkjuNUtLa/t7Kd 5EnuXCQ5ifa7
FJH2hsbc7YnJGeMDP3lyAGk6lDqtq9xbrIqJcT25DgA7opXiY8E8FkJHtjp0 oAuUAY+qeJ9N
0zUTYXAvpbpYlmZLTT7i52oxYKSYkYDJRsZ9DQBHdeLtHtHuhLJd+VZpK89w ljO9ugjUmT98
qFMrtYEBs7gV+9xQBsXMy21vLPIJGSJC7CONpGIAzwqglj7AEntQBJQAUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAo AKAK7tjUYV3Y
zFIdu7rynON3v12nr1GcMAWKAOR8daIdYstVtZo7xLe7sBELm2uBEImAmBLj zE3qBICVJKnH
PSgDQ0bTPLmmVrfULe3EEccZub1pZWO6Utl/MZj/AKzjJ44x0GADQ1Swe709 re3n8mTzUmV5
AZACsgfBGQcZGMZGB06VE4c8eUadilLpWq3BiW51GzMSTRyssdkysdjh8AmU 4ztx0NYrD2ad
x81ifxZps2s+FdX0u1aNJ76ymt42kJChnQqCcAnGT6Gukk4e+8J/atUtr1PB 0aaPapbMdGZL
XLlft6sqoH8rIa5ik5YDBJBLDbQBT1HwRq91eyPcW186vLdGz+ySWg+ySPe3 MomLzKzQ7klh
IeAGQbDkZVBQB6Rqlv519pMn2H7T9nu2k83zdn2X9xKvmY/jzu2bf+mm7+Gg Dm9b0+7i8dSa
sNF1nUIPsVqkLadqCQKJI5Z2ZZEaeMOMOmAwYckdzkAp+ItA1HVm1Sx0PTb7 SFvYruG4mu7x
TZXCyQyKCkKSPsZpWjkLeWrEB8nLFWAK+o+EDfWevy2Hhv8AszzvD5s9Osi0 KCKcm8DYSNzG
rESrh88CVhkZcUAF14L1FNOeXRLSDTdbvNQ1Qz38TLFKYZhd+QXkT5mXe9u2 OSCFOMrwAWPh
nLpN54h1y98OaPBpemtaWcWLb7MYpJVe4L/Nbu6bgrx5BO4ArkYIyAegUAFA BQAUAFABQAUA
FABQAUAFABQAUAFABQAUAV78MYFCmRT5sZ+QkHG9c9AePXtjOSByACxQAUAF ABQBXcN/aMJB
kCiKQEAnbnKYyMYz1xkg9cA84ALFAGfqWpRW/m2yGc3XlblEUDvtzkKSVRgO VPUHp0NAE1nq
FveSSRw+arxBWZZYXiIBzg4YDP3T+VAFqgAoAKACgAoAKACgCvqF/Z6ZZyXm pXcFnaxY3zTy
CNFyQBljwMkgfjQBnweLPDdx9n+z+INKl+0ymCDZeRt5sg25RcH5m+deBz8w 9RQBqTzw2yB7
iWOFC6oGdgoLMwVRz3LEADuSBQBJQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAV79d0
Cjbu/exnG3PR1Ofun88ceq9QAWKACgAoAKAK7r/xMYW29IpBu29OU4zt46dN w6dDjKgFigDj
fH2nXOqWWs6fbXV5ZvfacIY5ILYypKSJ1Mch8t8L86524bHQ0AaWiwTvd3H+ nalNtt40+13N
ssUkh3THGPLVfl3r0UdBnPOQC9rlhNe6S9tF5c8hlSTbcHajKsquVJCnjAx0 PvmsqsPaQ5So
vldzI/sK5aW3KaNo1n5c8UhmhmJdQrqxwPKHJAI6jrXNHCpNOyK9o+5d8fTz WvgXxDcWsskE
8OmXLxyRsVZGETEEEcgg85ruMzk7l7wWeoRaMmuDRJvs6faLxdQe4tpcytK6 xlluXU7bZMIw
Ub2bkLICAYep3mrxeDNRudeuPEEZt9Muf7LntYr23IlSa5AeVUO9R5a2pBuC eMnJPmEgGxHF
4lHiDUpZNX1K1nD3uRHpdxPHFBiT7OwLSGByB5DbYY/NJG1uspoA6j4fi4Gj TC4truIC4YRy
3VxcyNcKFUeYEuCZYQSGHlsTjBILAhiAZ/iOKaX4a6cLf+2Q6PpshaWAzX8a rPCzO6BW3Sqo
LMNp5B4NAEc9+J7nwl5Z1y/8jVZDLc3ekzROAbaZAzgQoqrumjUNtA6nJ2sQ Ac/Jourf8I1o
EMq65Ot3p9teauJrm5llSWK5spG27mLRyBDcEJHtZiOASq4APUNN8r+zrb7P 5/k+Umz7Rv8A
N24GN/mfPux13fNnrzQBYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAq6 mAbZMsq/v4uW
VT/y0X+8QP6+mTgUAWqACgAoAKAKsgH9q253KCIJfl2rk/NH3zu/IY5GcYGQ C1QBn6xqFjbW
80F1c2iSvExWGd0+cEEfdZhkHp1A9xQBYs7+zvd32K7guNmN3lSB9uemcdOh oAsUAFAEdzBD
dW8tvdRRzQTIUkjkUMrqRgqQeCCOMUASUAU77SdN1C4tbi/0+0up7N99tJNC rtA2QdyEjKnK
g5HoPSgC5QAUAFABQAUAFAEc88Nsge4ljhQuqBnYKCzMFUc9yxAA7kgUASUA FABQAUAFABQA
UAFABQAUAFABQAUAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACg Cu7Y1GFd2MxS
Hbu68pzjd79dp69RnDAFigDi/Hst8tvrcGjanaafqE2mqsJnba0hxOAsbeYm x9xXDkkL3BoA
0tEnubq/uSNT0+8uFtolkntoSIid0+AF8xiMZXPzHOD0yMAGhrkd4+kulsJJ ZvNQ7bd/Kcx+
apYAlhg7MjORn2zisqsXKFolRdmZHkXplt/s2m6zAwniLPNqAZAgdS+R5zZ+ XPGDXNGlUTTu
/v8A+CVzf1Y2fEd1eWHh7U7zTLf7TfW9pLLbw7C/mSKhKrtHJyQBgcmu4zOL 1nxElvo1umke
NI7wTXDltXuL+yggj2qv+jmVbd03neHVNm4hXO4BcEAx9I8Qan/ZGs61FqEd tqmppY3gsGMc
cKQy29kkt4u5GdUTMg3nfGuw7lbacgGhY+I9Qe3tI9a8VWlhprvcbdatZoXW RkEGyIzyQLC5
PmT/AHIx/qgM5STIBH4e8WateWulT3esY1Ob+zli0vZEv2+CaK3ae52bfMO0 yznchCDyeR8r
5ANDTNb8RWXg3w/4hu7j+2Xv7RPOtgkdupmmjj+z4bBIzKFjPbdcM52ogVQD qLxrjTtBsUvt
Y2XSS2kM179mB+0OZY0YeWOF8wkrx93fntQByfxOj02XxVoC6vd+H7SAWV6V fXbZZ4C2+14V
WkQB8Zwc9A3HPABX0fxBqcQ06CfULu11CN9Pgh0W8Mbz3UEkcHnTybkEruhk ny6lVBgOV+Vw
QDPvPEGp6hpmnqmoR6ndzvY3N9ZSGNF0u8F9abbYmNN8QJeUYk3v+64yVbIB sG80q8vSfHtx
aS2EVuiIurRRRQw3u+Rp42QkorhGg8vcWJjyyM4MjsAR6z4qOneIdLttBvrG 201ZbK0isWuo
UW7ileNfNt4REWkjCS4DLKqhom+UhSGAMfT9X1LSPBvhmws/EcFtGtoY765v ru3tfsNxHHAB
ZlzBIqsN0h8t08z5Cd2FIIBqXHijU1uLX+0tej0zUze6bBFpccccS3sUpt/O kEcyedjdLOuQ
Vx5eCAytkArp4r1ySzsTYa5HPf3iWp1CKSCKRdIuXu7WM25RArKCJp12SMX/ AHXDAqxoA6ia
51y08QQaEt1JcC6eG6ivZFiDJbxBRcIUAAYl1jG7g/6ZlRiI0AdZQAUAFABQ AUAFABQAUAFA
Fe/3+Qvlfe82PP3um9c/d56Z9vXjNAFigAoAKACgCu+/+0Ycf6vypN33uuUx 0+X168+nG6gC
xQBDekiznIVmIjb5VZlJ46AqCw/AE+lAE1ABQAUAFABQAUAU9V0yDVbdYLqS 7jRXDg2t3LbN
nBHLRspI56Zx09BQBYtoIbW3it7WKOCCFAkccahVRQMBQBwABxigCO6sbe6n tJriPfJZSmaA
7iNjlHjJ46/LIw59fXFAFigAoAKACgAoAKACgDPvNFsr3UYL26WeSSDaUjNz J5GVO5WMO7y2
YHkMVJBCkHKjABoUAV47G3j1Ga/SPF1PFHDI+4/MiFyox0GDI/5+woAsUAFA BQAUAFABQAUA
FABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv/Exhbb0ikG7b 05TjO3jp03Dp
0OMqAWKAOL8ew3zW+tz6NplpqGoQaarQiddzRnE5DRr5b733BcIQA3cigDS0 SC5tb+5A0zT7
K4a2iaSC2mJiB3T4Iby1Jzhc/KMZPXAyAaGuWdxqGkvbpFbtIZUby5XPluqy q2CdpxlV9Dye
/WsqsPaQ5SovldzkpdEk10X0WlppdkbcS2cxtJVYLKYjlSTAD/GobDcDP8Qq aeH9i03FevUT
m5X95nVwMvhzw15mr6jLcx6dbGS4vJVyxVFJZiBknAB9TxySeTuI5fRvFuv/ APCRWmia3p8d
vPLcRhnaFYiYpILtxtVJ5QCHtfvF+QxG0YDEAw9c1bWNYsfHDPdQR2Ntot1F JbeU7btk+owq
yHfhGIiTcdrbsAfLgUAdJca/r1prcfhyWbTZdQuXhMV8tpIkMayR3T4aHzSW I+yMMiRf9YDj
5cMASeFvEmsa1r89jJHYx2thEftMqq++WRbi6tzsXOFVjbh+SSvK/Pu3KAdJ FPM2s3Nu0toY
I7eF0jVj56szSBi46BCFUKe5WT0oA4e81vUtK1lbKb7XLBpWpy3l1ctIyq9r MyBd/ULFGLuU
gklf9Afpg+WAV213xDb+H9Y89I0S30J9amS6aZbmF7g3brbAqylRHsRd4KsB GQANwMYBYg13
xHYaSTamPU59R129s7KPyN0kCpNdMdxedFkG2Hao3R7R/ewAQDU8K+Idd1nW jZ3drY2sNraJ
LdYcPKZDNcw7QEdkXJgViNzFCGQ7ydygHYUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQBV1M
gWyZVW/fxcMyj/lovPzAj+p7YODQBaoAKACgAoAqyEf2rbjaufIl53LkfNHx jG78jjgZzkYA
LVAGXqv9g/aF/tf+zfP2Db9q8vdtyem7nGc/rUSqQg7SaRSi3siTSP7H/e/2 L9h7eZ9k2e+M
7fxxn3ojOM/hdxOLjujQqxFDTNLGn3moXAu7ic38wmdJdm2NgoX5dqg42qo5 J+6O5JNyldJW
2JUbNl+oKMeDwn4bt7O5s4PD+lRWt3t8+FLKNUm2nK7lAw2DyM9KAJB4a0EW 9vbjRNNEFqkq
QR/ZY9sSyAiRVGMKGBIYDrnnNAFi/wBJ03UUnj1DT7S7S4REmWeFXEioxZFY EchWJIB6Ekig
CS0sLOy2/Y7SC32xJAPKjC4jTOxOP4V3NgdBk460ASLBCtw9wsUYnkRUeQKN zKpJVSepALMQ
O24+tAEc9hZ3H2j7RaQS/aohBPvjDebGN2EbP3l+duDx8x9TQAT2FncfaPtF pBL9qiEE++MN
5sY3YRs/eX524PHzH1NAFe50LR7v7Z9q0qxn+37PtfmW6N9o2fc35Hzbe2c4 7UAWLSws7Lb9
jtILfbEkA8qMLiNM7E4/hXc2B0GTjrQBYoAKACgAoAKACgAoAKACgAoAKACg AoAKACgCvfts
gU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAHH6Y88kVhG+jeILlZooS98mpK IcsqlmwbgPgE
nOEzwcA8ZANzQrqeTRtPaSCeVmt4i0pZTuJVMty2f4ifX5W9sgGfqd4tr4ku A1/Z2e60g/4+
Rnd883T5l/r1rirRbqXXZfqWmuUl8P3Iuda1Blu7a7xb24324wo+abj7x5/H vVYeLjKV/L9Q
k/dRPdX1xH4y0ywSTFrPp93NIm0fM6SWwU56jAkf8/YV1kHH23i3VLfWPEGo iD7Xpmm2jSXK
T3m14kivL5GaJFj2sxSEYBKfdQMzctQBuHxhc/2Tf3w0uOPyb2WxtI5J3drx 45pEcqsUbvjb
GWwFLcPkBV3sAV9I8cX2tGePSPD0k0tvZG4dZbnyMyiS4i8kB1DAmS3wCyr8 rMWCFQjAG5oH
iG31+e4fTF82wiigdLrJXe8ieZs2EAjEbwtnv5mOCpFAGxQAUAFABQAUAFAB QAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQBXvyywKVEhPmxj5AScb1z0I49e2M5BHBALFA BQAUAFAGSmi2
kMkUET3kcSxkBFurjAxtAwQ+BgHp37dDQBpW0EdtbxW8C7IokCIuScADAHNA GXqNherqE2oW
V5DCrW6RvHJaPMfkLtldrqf4zxg9KxnS53e40yXS9Oura+ubu9u4Z5J444gI YDEFCFz3dsk7
z+VOnT5Lg2JrPh/T9YuLe4vPtaT2yOkUlrezWzBXKllJidSQSinBz0FaiKcv grQZLp7hrWcN
LuE0a3kyxThpZJWWSMPtkUvNIdrAjDkYxxQBcm8O6ZNYfYjBIkQuJLpWinkj kjlkdnd0kVg6
EmR87SOGK9DigA0Tw7pmhGRtNgkjeVAjvJPJKzjzJJOWdiSd80hyeTu9hgAk 8PaZ/Y+jwWTT
faJl3STz7dnnTOxeWTbk7dzszbRwM4HAFAGhQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQ
AUAFABQAUAFABQBXv13QKNu797Gcbc9HU5+6fzxx6r1ABYoAKACgAoAruv8A xMYW29IpBu29
OU4zt46dNw6dDjKgFigDkfHWtHRrLVbqaS8e3tLASi2trcSiViJiQ58t9ikR gFiAozz1oA0N
G1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54xnIyAaOpX5tLE3EMXmN5 qQqkhMYLNIE6
4Jxk5zg5HTrWdSbhHmSKiruxUm1PULbynubG1WJ5o4iUumZhvcIDgxjPLetc 6xErpOP4/wDA
K5Y9GXNb1KHRtGvtUulkeCxt5LiRYwCxVFLEAEgZwPUV2GZj3HjG3s7C/uNR 0670+ewSKSW1
upraNvLkcojiQy+UAWVxguD8p45XIBTg+IumXaxyWFjfXkLxRO00JhKI8k0k EcWfM+ZmliZA
y7k5Dbtp3UAR6n8UPD2lmFbx5IXZGe4SSSGNrYLI8b5VnBkIeKQYh8w/Jxnc m4A6y6uvs89p
F9nnl+1SmLfEm5YsI77nP8K/Jtz/AHmUd6AOX13X9Wj8ZHRNOuILWP7Jbyq7 6Pc3255JJkO5
4nVYlHlry/qTnANAFPXfFms6YNanlktLM2Nvdy29lc6bOfP8qN2j23W8ROWC iQoo3BdynlWY
AGhqnjUWVvqEcmlalZ3llpj6jKJYY5Vt4wJtpcpLtYkw8IHBO8YwA5QAk/4T mwh8+a/sr6xs
IpbqFb6ZY2ile38wyBVR2k6QysNyDIT1IBANDRNeOpajd2FxpV9pl1aRRTMl 0YW3JIZApBik
cdYmznHagDYoAKACgAoAKACgAoAKACgAoAKACgAoAKACgCrqbItshkKgefEB uGeTIuOx747f
iOoALVABQAUAFAFWRkGq26krvMEpAxzjdHnt7juO3B6gAtUAZOtaXHcx3c73 LRpLbeVNE4i8
mRBuOH3o2B87A9sdqALVlYG1uJriS7nuZZURC0oQYCliANqj+8aAJ7q2gu4G gu4I54XxujlQ
MpwcjIPHWk0now2KcPh/RYJUlh0iwjkjYMjpbICpHQg44NLkiug7sl1vTYdZ 0a+0u6aRIL63
kt5GjIDBXUqSMgjOD6GqEZ+q+F7bUNUbVFu7u0vwkKxTwFCYDH5wDKHVlJK3 MqncCMEYAIBo
Ap2PgWwtI5Q17fXEk0sE0ksrRhneK7kuwcKgAzJKwOAPlwBg80ASJ4NtoJpJ bLUtSsjcPIbr
yJEU3CPNLNsLFCyBWnlAaMo2G+8SAQAbl1a/aJ7SX7RPF9llMuyJ9qy5R02u P4l+fdj+8qnt
QBl6l4ckutZk1Sz1vUtLnmt47eVbVbdldY2kZSRLE5BzK3QjtQBHf+E4NVnl /tvUb7UrR/N2
WU3lRxQ+YjxttMaK5/dyOg3MeGz94AgAJfCcFzZ6pBf6jfXkmq6eNPuJ5PKV zGDMQQERVDfv
2GcY+VeM5JAC68HaXeadHYXfnzWqXd1dMhfHmG4E4kUkAHbi5fGMEYXng5AK /g3RNZsNR1DU
/EN99puruKG3VPNSXYkRlYHekMI5Mx42cYzuOcKAdRQAUAFABQAUAFABQAUA FABQAUAFABQA
UAFAFe/bZAp3bf3sYzux1dePvD8s8+jdCAWKACgAoAKAK7tjUYV3YzFIdu7r ynON3v12nr1G
cMAWKAOX8Z+I49Bt7+a+v7Sys7a0En7xf3s7sJT5cZ8xPnIjOADkmgC5o2uw 3bSu2qabeWfl
JJDdWpCxvzKGGd7A48o9Dxg+lAFrXNSFjpL3cE0ChZUjMknKJmVUYnBHTJ7j pWVWThC8dyop
N6nN6n4wuLOOU2d3pupskEkgFsEGCqM3OZ92BtBOB06c1FGc5P3mvSzv/kEr LZM6KDWVj8Nf
21q9tLpccVsbm4ilG5oVVSzZA5PAJxjPqAeB0EkepeKdG0xLlr688pbSV4Zj 5Tttdbc3LDgc
4iBbj6deKAMu/wDHmn2t/ZRQRyXltdvGBJbRTSybXS6YSLGsZLoTanayk5DF uFALAGhdeL9D
tHuluLuSNLRJWkmNvL5J8tS0ipJt2O6hXyiksNj8fKcAEkfijSZZbWO2mnuW u8GI29pLKNpY
qsjFVISNirbXbCsASpIBNAGhJfW8eow2DyYup4pJo02n5kQoGOegwZE/P2NA GHqfi6HTH1CO
6hjiezvbe3VZJwhlhkVGa4AI4RFM5J5GLeQ5GG2gEkHi7TjrEum3LeTM929t ZbQ0n2zYsXms
m1f4HlKMMnb5bk4CttAKeg+PNP1KG8kuI5LdLVIXEsUU0sMwlhhkUI5jXLlp wqx48xuDt5wA
DQi8X6HJcWlsLuRLq8dkhtpLeVJiylNwMbKGUgSo+GA+Q7/ugsADcoAKACgA oAKACgAoAKAC
gAoAKACgAoAKACgCvftsgU7tv72MZ3Y6uvH3h+WefRuhALFABQAUAFAFd2xq MK7sZikO3d15
TnG7367T16jOGALFAGLr2jy6hHfqHikt72z+yz27xMxkT58gMJExkSEdfxFA Fyxs7mK8nuru
4imeWNIwIoTGFClz3Zs/f/SgDK8Y2mrXPk/2SLk4gmVPs9x5Xl3B2eVI/wAy 7kXD5X5s5Hyt
23ouK+Ly+7qZVE3sQ+MovEmoWccXhrdp9xHLnzZduDy4zkOeMDOCjZ8xOFKk q6Lpxfv6hUU2
vdNO001r3wsuma6vni4tTBcpllLKy7SpO9jnBwWDnJyQaym05Pl2LjdJXOdv fhxb3eneTJe/
6VLp9xb3Fx5R/fXMolH2jbuwuDc3R2Dg+d22LiCjU1jwvNeeIP7bs7+O3vIU gFuJbcyxq0Yu
VJcBlLApdMAAVwVByRkUAY978NLa4fVhFJpsA1BLwrcjS0a8V7hZA2+ctlkB lbCqEbARSxAb
cAbms+G31LxDZaklzBaLbeXvkggZLuQI5fyzOJADCxxujZGB5PBwVANiSG4O owzJdbLVIpEk
t/LB8xyUKvu6jaFcY77/AGFAGPrnhDTtb1hb3UF8yFrR7aeDLL5uVdEbcGG3 ak9yuB187J5R
cABovhj+zLrS7lrzzprO0uYp28rb9pmuJYpZZsZ+TLxsdo4G/AwABQBj2vw8 +z+HpNDfUILi
xlitWkSez377i3SBFYjfgwsLdN0WMnLfOMjABoeG/ByaJqNteo9jE0UVzG8F hYLaQEymDlVB
JGBbjO4sSWPIACgA6igAoAKACgAoAKACgAoAKACgAoAKACgAoAKAK9+u6BRt 3fvYzjbno6nP
3T+eOPVeoALFABQAUAFAFd1/4mMLbekUg3benKcZ28dOm4dOhxlQCxQBl6jP dXFxcada2sEi
/Z1Z3lm28OXXAGxgfunrxz0oAmsby5lvJ7W7t4oXijSQGKYyAhi47quPufrQ A/VrxrCyM8cS
yuZI41Rn2Al3VBk4OPvelZ1JuEeZIqKu7FKbU9QtvKe5sbVYnmjiJS6ZmG9w gODGM8t61zrE
Suk4/j/wCuWPRljxHqf9ieHtT1byfP8AsFpLc+Vu279iFtucHGcYzg12GZHF 4l0GXS5tUh1v
TX0+B9kt2t1GYY24+VnzgH5l4J7j1oAkl13R4PsPnarYx/2lj7FuuEH2rOMe Xz8+dy9M/eHr
QBX0zxFZ3VjNc3csFj5Mt4pWWYD93bTtE8uTjC/KpJ6LuAJ7kAuW+rabcaWd Ut9QtJdPCM5u
0mVoQq53NvBxgYOTnjBoAr6/rQ0YWSrYXd/PfXH2eGC1MYYt5byEkyOqgBY2 7+lAGefFdz9t
NlF4X1mW7S3S4mhWS0BhV3kRAxM4BJ8pj8pPGM4PFAGxFq2my6pNpcOoWj6h Am+W0WZTNGvH
zMmcgfMvJHcetAGXdeN/Ddva2l5/bNjLY3V2bP7XFdRtBFIInkw77sLwmPXL LxzmgDUm1bTb
e3+0T6haRQb5E8x5lVd0YYyLknGVEbkjtsbPQ0ARz67o9vLbRT6rYxSXcrQW 6PcIpmkVtjIo
J+Zg3ykDkHjrQBz958R9Hs9H1jUJba+/4lN3JavbBE8+fYzK0kS7vmj/AHcp 3ccQy/3DQB0E
mu6PFeXVnJqtil1ZRGe5ha4QPBGACXdc5VcEHJ45FAGfdeMNM+y2k+jH+3/t d2bONdMnhk/e
CJ5SCzOqjCITyc8jjmgCxH4m0yOW1tdVuYNH1K7x5en3t1Ctw2WKrhVdg24j jaT6dcigCOw8
X6DeJdkanaW72VxNb3Ec88avE0TSAlhu4BWGRxn+FSeMHABqJf2b+Xsu4G82 V4I8SA75E3bk
Hqw2PkdRtb0NAFigAoAKACgAoAKACgAoAr367oFG3d+9jONuejqc/dP5449V 6gAsUAFABQAU
AV3X/iYwtt6RSDdt6cpxnbx06bh06HGVALFAHP8AiHRo7+4mlvtI03VrPyoz 5N6N+x0MnzBP
LfJxIQMc9R3oAk0bQobRpUbS9Ns7MRJHDa2oDRpzKWONigZ809Bzk+tAFHxw t4tsltYW7vBJ
DPJ5UVms6zXIKNEkgKsAjEuS3y8gfMO+1KMJaSS6b9jObktjP8W2j2cEEvg7 w5ZSX8M+fnsf
L5BYDBMeCPkZt29MYQgkOAxRpUr+/YKk5pe6bF/Y6hr3w9vNPm8uLUNQ02WA GRmwHeMqrP8A
IpB5BI2DByMcVE0lJ8uxUb2VzNuNA1671uPxFLDpsWoWzwiKxW7kaGRUjuky 03lAqT9rY4Eb
f6sDPzZWCinJ4L1hLHVbaF7F/wDhILSW2vWaZ1+xeZPcyloxsPnY+1sMHy8+ WDxuwoBIfBV7
bWd+sUNpfnUb2W4nglvZrXb/AKXJPA8c8al0K7hlANu4llKneZADoIdP1f8A 4Q6exv57TVNU
lt5lzeRgwOzbtscgRVDIAQpIVdwBO0ZwACv460GbXYdLEOn6bqSWV79oltNR crDKvkyx4zsf
kNIrDK/w9qAKdp4Ls7/VmvvEfh/Q3jXT7ezt7RUFylt5ck5IQvGuFKyR9AOh GMAEgFODwTqE
GqXEtvcRwFbi8u7S/a9uJjFLP5uCtmSIVKecRuy24KflBclQCvYeDtctdbOt LDaLPbvbvBaz
6zc3glKR3cbbp5Yy0YxdAgBWGUPTdkAB4i8Ga9qOmzaNajTRZ/aNRuo7qS5k WRmuoroBDEIy
AFe5xu3nITOMnaAC54n8DtqGos1hBB9huNPi057f7fcWcVvGhkwfKgwJ1IlI 8tigATAYbyQA
F74C+1aDqkTGD+07mLVIoH/5Zf6TLK8TOdu7ciysoI+6JZQM7jkAx/H3hLX7 231K6/4/Viiv
5Udb+4Z5VktbiOOFLML5Ssvmou5TubYSeXIoA0Nd8Jaxrmpw6tqWlaHcyJLA H0ye6eW3kjjj
ulDGQw/e3XQO3y8Dy87sngAuXXhfUr3S9fh+z6bpz6loSaXb21vMzwwMn2kD ny1wm2aPovGG
GOASASR+Fbw3mnw3UVjNYafrU+qRyO5Z5PNFy+DGUwrJJOm07jnaW+U4WgCx pGjf8VfqV4Un
jsbSUtbQyjEf2iWNDNLGuMbcYAYc75brOd1AHUUAFABQAUAFABQAUAFAFXU1 RrZBIFI8+Ijc
cc+YuO4747/gehALVABQAUAFAFWRU/tW3Yhd4glAOecbo89/Ydj25HQgFqgC vqTbNOuW3bds
THdu244POdy4+u4fUdaALFAFfULtbG2MzRyS/OiBI8bmLMFAGSB1I6mgCiuo zW8jNc6beRxz
TooZmjITdtQZxIe/oB16ZySAWtZ1GHSdKub+5KiO3jLkFgu49lBPcnAHuRQB Q0jxLZ3kVwbq
a1tJIJ2gYGf5WIVScFgp/ix06g02rOxTjZ2NO2v7O6cpa3cE7KMkRyBiB+FI kz28T6ausSaW
ovpbqGVIZDDp9xJFG7KrANKqFB8rqTluAecUAaF/fW+nwLNdyeXG0scIO0nL yOsaDj1ZlHtn
nigCxQAUAU7DUob661G3hWRX0+4FvKWAAZjFHLleem2VRzjkH6kANW1KHSrV Li4WRke4gtwE
AJ3SypEp5I43OCfbPXpQBl2/jbw7caPpeqw6husdXu1srKXyZB5sxZlC425X lGGSAOOtAGxf
31vp8CzXcnlxtLHCDtJy8jrGg49WZR7Z54oAsUAY+g+KNJ1/Z/Zs058yITxe faS2/nRnHzx+
Yq71G5clcgblz94ZANC6vre0ntIbiTZJeSmGAbSd7hHkI46fLGx59PXFAFig AoAKACgAoAKA
CgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0boQCxQAUAFABQBXdsajCu7 GYpDt3deU5xu
9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cfXcPqOtAFigCjrcUstiBbx NM6TwybFIBYL
KrHGSB0B70AYMGii3kT7HYa4HaWHc17qr3MaqsqOTtedxnC9QM9u5oAteM9A Oq+GbmxtjMzP
5ZKmdiWVXjZgNxI3FY+M9zyRkmga0Zy9pFq9n9tZY7uCS8lknZTZTPhnVAfu ZVTuViCGbAI6
nNaRlBfEvyNouK3Nvwj9ufVgbuK5CpDL88sUqgZMWADIoz91jxRUlFv3VYmo 4v4SKy0+7sfH
Oq30mi6zOl3exvDc2+oItqsZtoYizwmddxDK/JjY4AxnArMyM+88KXd1p1xD NocclvI9vNa2
jzpILW2juIpXstrHYC4QkbSUyRGWCRRsQCP/AIRK7k8Xwaiun31rGstrJZ+S bKOKwt0jjDW7
PtaZOUlzHCfLYPjcA7kAFe08D3unaDoVvp2kQWrDSol1mCAxx/bZUltGaKTB AlZo0ukBY7fn
YFgHJIBTuPBV1cS3EqeG7uw0d72WWPSLWPTnYM0FqiymOUvAADFOMg7xvGOG agDQuPCmoLcW
qXmhyatfpe6bLBq8k8M7WcMJt/NQyyFJScxTv8iYbzc4BZgACTTfAdxZ6Do8 3kf8TKKLSUmt
94/cvFLbG5fduw2Y7aEYHTyflyXOQDL03wBqMenSxXljd3M6pbnUFuWsxDqj x3EMrlRGoaYs
IpQHuWVh5mD99yoBqaz4f1S48Q6Xe2Oiz2f2SWyW0NrHYolraK8Zlilcnzgw BmXbCxjKlRzl
8gFjQ9M8RS+G/DtkNK/sq+8OWgKPfyxvFcXAtHgVQIXY+XmQszHacBQFO4lQ DDsPBV1FdFpf
Dd3c6LbXFvc/2Xex6cpuH8q7jcpFCVhyPNgJL4YhOp2qKANyLQ9XHxHttXaw niY3cou7qBLR
LeW18mRYlLDFy7Z8jcr5TepIGFQgA9AoAKACgAoAKACgAoAKACgAoAr34YwK FMinzYz8hION
656A8evbGckDkAFigAoAKACgCu4b+0YSDIFEUgIBO3OUxkYxnrjJB64B5wAW KAK+pBm065VD
IrGJgDGSGBwehAJB+gJ9jQBYoAKACgAoAhnZ1ltwhYAyENgdtrdeD3x3H17E AmoAoPrNkrum
Z2KMVJS2kYZBwRkLjqKB2GtrliilnNwiqMlmtZQAPUnbxQFizdX1vaT2kNxJ skvJTDANpO9w
jyEcdPljY8+nrigRJFPDK80cMsbvA+yVVYExttDYYdjtZTg9iD3oAjv7630+ BZruTy42ljhB
2k5eR1jQcerMo9s88UAWKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgC vfrugUbd372M
4256Opz90/njj1XqACxQAUAFABQBXdf+JjC23pFIN23pynGdvHTpuHTocZUA sUAV9SXfp1yu
3dmJht27s8HjG1s/TafoelAFigAoAKACgCG5txOExI0bRksrKqkqSpXI3A4+ 9/kZBAGtbynd
i9nXOcYCcZ3f7PbcP++F98gHFX+i6w+oySR2dxtWd2SSLyDkGV3UqWkGDhh1 Xt3raFXki42N
4VFGNiG40TXJZJ3+x3cjyo6hpvs4bJQoMssg4Gey0Or7nJa3/DjdRcvLY2/H lnql3JoP9iHy
7qLUHfzSmViH2S5XJOCFyWChirAMykq/3Tic5z+kWF9rPiqSC9TxHaaRF9oE Uct5dQFGSHT0
UNIrjf8AN9owdzKx8xgW5agDPUatqNnpb+I4Nck1l7vSJoEjhuVt1iBtXmMq RgQqwkFyT5gD
DA6AJQB6ZLHqR1SGSG7tE08JiWBrZmmZueVk8wBR93goeh554AOf8M2d9Fqi zaZb3emeH9hx
aX0u4uf4WiiILQJjbhS6hQrL5Kk7wAY/iqe4tted7yXWYbg6xp6ac1u1ytqb VpLdZA/l/ucl
zcDEnzEEDpsoAj0+1vrXw94ZPiK48Rz202nmXUGhe6Nyt4UgEasIMSKoUTAj G3Iy+XIYgBa3
niS105LHWk1VtZvNQ0ubdBBJJEsYFoLkGSIGONdyXG5cgYJOMMCQCT4WT3F1 b6LcW0uszQTa
OH1OTUWuWV7oiExmMz8EEeeSYvl6Z/goA9EoAKACgAoAKACgAoAKACgAoAKA KupgG2TLKv7+
LllU/wDLRf7xA/r6ZOBQBaoAKACgAoAqyAf2rbncoIgl+XauT80ffO78hjkZ xgZALVAGbrl9
Zw2dxbXF5bQTSwNsSV48nIIB2uQDz68GgC1Z39ne7vsV3BcbMbvKkD7c9M46 dDQBJcTw2sLT
XMscMS/eeRgqjtyTSlJRV27DSb0RUXW9JbOzVLJtqlji4TgAZJ69AAT+FRGr Tk7Rkr+o3GS1
aF1vUF0yxa6keKOOPJkeU4VFAJJJyMAY61bdhIof21c/3IvyP+NTzMdg/tq5 /uRfkf8AGjmY
WD+2rn+5F+R/xo5mFg/tq5/uRfkf8aOZhYP7auf7kX5H/GjmYWGDxBIZ3gU2 5mRVdox95VJI
BIzwCVbB9j6UczCw/wDtq5/uRfkf8aOZhYZP4gkt4JJ7g28UMSl3kf5VRQMk kk8ADvRzMLD/
AO2rn+5F+R/xo5mFinLJbS6pDqkumae+oQJsiu2twZo15+VX6gfM3APc+tHM wsXP7auf7kX5
H/GjmYWD+2rn+5F+R/xo5mFiCLWVsIba0ijs7WLiG3hVdi/KpIRFz2VTwOwP pRzMLFq31e4k
uI42SIB2CnAPc/Wi4rG1ViCgAoAKACgAoAKACgAoAKAK9+2yBTu2/vYxndjq 68feH5Z59G6E
AsUAFABQAUAV3bGowruxmKQ7d3XlOcbvfrtPXqM4YAsUAc3rV1NbazcLaarp umTvbwEPfxGV
XUNNkBRJGc5K85P054AHaJPc3V/ckanp95cLbRLJPbQkRE7p8AL5jEYyufmO cHpkYADxhqIs
9PEEpkM3N55kUIZYooZEdnZS65ABUEKdxzkDsH7H20eW9tiXPkMPx2IrCzV/ EuuRQw3CSQqL
aOWNhlGG7y/P+cAsucKScgHC5IWHw827R/L9RVJRjq/6+QzxWtinwXu00qZ5 rNNLmWNnmWVu
IXBBZSVyDkYU4GMDAAFOcXF2ZUWmro5dtelSYwW3iP7To5kiE2tZtz9nLJOW TzFQRD5o4B8y
k/vvVkxnYsgOu63JYa3dR6lsi03SZLm3YQITcEPdpFMWxgqyRRvwMMdpXC5V gC74h1TUtKkn
hl1jy7qCyFxZxiKNBqdyWlzAFYFmUbYlCoQ4EgyzEg0gIdR1vxFDDqKwD57a S4s1fMfE8zsb
TjH8Km2X0P2nLEeW1MCCTxD4hTU9TNvNZzTwfaxHpe8yShY1k8lvJSIOu8rG dzSlWD8AF0AL
AYutS6beeIoy/iLTtVtPMtA93qSwT28Z8q/+RhH5ansRk5ywPPAoEakOs3en 6U8cGofY/s9t
JNpkCrHs1STzpwscasCTEVSHYkZDKkqjc2VagYeKdZu5dJ1mBtQ8y4kj1CC5 0zbH/otukU/l
zbQPMXdsh+ZmKnzeB8y4EBd1vxBf2eyK61L7JdeZI09jbPCt2fuiJbZZVKzo eSTwzN02kGIF
gOt1CfyrvTU+1/Z/OuSnl+Xu+0fupG2Z/hxt35/2Md6QHC+PFtT4p1B5ZtOW 7TSYDaxTRA3c
r77jC2r7gUlztAYK53FDg4wWgLt74h1WCa6axuvtmppJeI2j+WreTHGkxhk2 KBKN5jh5Zip8
7gDcuCwFW91S9m1TT49F1FPEEcF2r2905iYGVra8Dx5jCIxVVRgpKnLgFlDA qAegeHbiK5js
ZYLh7ldyqZZFCuzA4bcoA2tkEFcDBBGBjFLqB2daEhQAUAFABQAUAFABQAUA FAFe/wB/kL5X
3vNjz97pvXP3eemfb14zQBYoAKACgAoArvv/ALRhx/q/Kk3fe65THT5fXrz6 cbqALFAEN6SL
OchWYiNvlVmUnjoCoLD8AT6UATUAUdV0ex1XZ9uhaTywyjbIyZVsbkbaRuU4 GVOQcDIq4zlD
YmUVLcguNGsNRE8GoW73EKyg+XNNK8b9WyVb5SAZG4GR8q/3AFI1JR2BwT3J 7qxi/s6O3WUx
Q24GGkYuQqjHLMcnjuTUS97UpaFC0062vYfOstRiuIs43xYdc/UGp5R3Jv7D /wCnj/xz/wCv
RyhcP7D/AOnj/wAc/wDr0coXD+w/+nj/AMc/+vRyhcP7D/6eP/HP/r0coXD+ w/8Ap4/8c/8A
r0coXD+w/wDp4/8AHP8A69HKFw/sP/p4/wDHP/r0coXD+w/+nj/xz/69HKFw /sP/AKeP/HP/
AK9HKFw/sP8A6eP/ABz/AOvRyhcP7D/6eP8Axz/69HKFw/sP/p4/8c/+vRyh cfDo3lTJJ5+d
jBsbOuD9aOULmpVCCgAoAKACgAoAKACgAoAKAK9+u6BRt3fvYzjbno6nP3T+ eOPVeoALFABQ
AUAFAFd1/wCJjC23pFIN23pynGdvHTpuHTocZUAsUAV9SXfp1yu3dmJht27s 8HjG1s/Tafoe
lAFigDN8RRpLpqxyoro9zbqysMhgZkyCKAMH7BeReXJfeHdD05UuLcpNZXJl k3efGMYMCYGC
ec+2OeACf4hXGpx+Db4W0UUc0wigGyTdnzJI0K/MoHO9xnjHB78A1uYOla1P ZSauJLm+Tdey
yp8m5yojiKbwyMV+Ujk4x0OK2jTc9fP8/wCtjZQ5tToPC+tTahqHltctNGY5 DhihGVMeCCqr
/fNTUp+zdiakOTQztNsr7UfHutzTefJY2eoRorjWrqHysWsDhBbIPLdSzZO4 jO5sg4wczIr6
1r+sXun3Nta3lja3VhqFjayTw72E0j3kSeYFDAiHAdGTcSXEse4eUWcAsSeJ /EUXiN7NbCCe
wsbu2sbu5CxxJJJIkTF1Z5wyY89cRiOQtgKHy3ygFOy8Za9FpOiz3/8AZs8+ v2UNxbGC2kiW
0aSa2iw4MjGUA3Ybgp/qyP4sqAU4NY8S6b4g1jSrCCDUdTutQkuJZ4LRdgSO 0sVwIpLlMZ85
efNP3fund8oBY1LXNU8RaZDdL9hs7G21XSI5rZR9peR3ktJspOrhNoMyrwjZ 2Eg/MNoBj6PJ
4k/4RXwz9o1K+a1hl0u+N4Z5PNu/tM0KmGRzw6qXudydl+zcn5qALj+LvFGr aPZzPax6UmqP
Y3VjMdgKK15bLsKpcM86FZsM22HjggeZhQDoNV8T6vp2s20MMMd/Z29xa2Gp Sx2oiVLiZo1y
GafcoAmibaI5Bzt35yVAMvw5qA8P+G/CurT6jfTLqGni51X7VdTXe2JbRpXu ArFim2QIp2YU
+aAQSUwARt4g8V3mu6Zo90selagl7HIJZbYCOWKS2vfleGO5fcA1vkHzRzg7 RtBYA3IvFOov
4vtrWO187RL27lsYbnyFj2TRRyNJ83nFnw8Ei4MSDuGIA3gHYUAFABQAUAFA BQAUAFABQAUA
VdTIFsmVVv38XDMo/wCWi8/MCP6ntg4NAFqgAoAKACgCrIR/atuNq58iXncu R80fGMbvyOOB
nORgAtUAVdWIGlXhKqwED/KzKoPynglgVH4gj1oAtUAR3EENzC0NzFHNE33k kUMp78g0AVY9
F0qKRZItMs0dCGVlgUFSOhBxQBbnijnhkhmRZI5FKurDIYEYINAGM/hzR7f7 PDFBNAjN5ccc
F3JEi8M3ChwOx6DPf1ILDuy5p+i2On3BuLZJvN2FN0txJLhSQSBuY46Dp6UB cjn8NaDcaoNU
uNE02XUA6uLt7WNpgy42tvIzkYGDnjAoEWG0nTWt0t20+0MEdu1qkZhXasLA BogMYCEKoK9D
tHpQBHHoWjxXlreR6VYpdWUQgtplt0DwRgEBEbGVXBIwOOTQBI2k6a1ulu2n 2hgjt2tUjMK7
VhYANEBjAQhVBXodo9KAKf8Awifhv+zv7O/4R/SvsPm+f9m+xR+V5mNu/bjG 7HGeuKALF5oW
j32owajfaVY3N9b7fJuZrdHlj2ncu1iMjBJIx0NAFgWFmtnDZraQC1g2eVCI xsj2EFNq9BtK
qRjpgY6UAV4tC0eD7d5OlWMf9pZ+27bdB9qznPmcfPnc3XP3j60ARyeGtBku LS4k0TTXnsUR
LWRrWMtbqhyiocZUKeQBjHagCTSNC0fRPN/sbSrHTvOx5n2S3SLfjOM7QM4y cZ9TQBXg8J+G
7ezubODw/pUVrd7fPhSyjVJtpyu5QMNg8jPSgCx/YWj/ANsf2v8A2VY/2n/z +/Z08/7u37+N
33eOvTigDQoAKACgAoAKACgAoAKACgAoAr37bIFO7b+9jGd2Orrx94flnn0b oQCxQAUAFABQ
BXdsajCu7GYpDt3deU5xu9+u09eozhgCxQBX1JtmnXLbtu2Jju3bccHnO5cf XcPqOtAFigAo
AKACgCveeYpheKOSTY5ZlQgEjY3HLAdcdcjOOB94AA1xKu7FlO2M4wU5xu/2 u+0f99r74AOL
u9SuxfyBEvZ1+0SKfKllHSZ1wCGCrhVHX8a2hCDi23Zm8YRcbtkN5qd5H9pK xahbJHE7KZJp
WK4jLAlg5Q8jpzQ4QUL813/wfvG4RUb3Ou1/VZtNFlDZ20dzeX9x9nt0llMU e4RvIS7hWKjZ
G2MKecDgEkYnOc3ZeP7h11J73RPKh0i0mur6SC7EgQRTXURVAVUuxNtkZCjD NkqVAcA0IPFN
5Dr1pomq6ZBBfXEqAm2uzNEsbxXLq25o0JbNq4K7QAGU7jyAAZ8nj2836rND o0DWOjRS3F7I
16Vl8uO4uYj5aeWQzEWrNgsoywGf4qAOsvtTgsbi1gmju2e6fZGYLSWZVOQP nZFIQcjliB19
DQBlz6/caXrltpurwQMuoSstlNayguwHJDwMd/yhlBaPzBwzt5S9ADD+K/jp vCNvaR2M+m/a
5H86SK4vVil8qMGUhUKNkSLFJEG4w7pjJPABTsfEXiDS5bm+1L7DqtvZeH7O 8v5be/bYwDXR
aaBRFtdpEQNj5Bwo3EcgA2L7x1/Z0U2oXmnY0hZbu3ilin3XDSWyzNJuiKhV U/Z5dpEhJ+TI
GTtAM/xF4vvNL1XTIdZtfsU1pdrPcR2F0ZopoJLW82BnZY8YeAlt4CKArFgA SoBuW3iW5fxP
Fot3Z2lk+wBmnunRp38re32YGICdFyAzBlZcHKj5dwB0lABQAUAFABQAUAFA BQAUAV78ssCl
RIT5sY+QEnG9c9COPXtjOQRwQCxQAUAFABQBXcsNRhAEm0xSEkA7QcpjJzjP XGQT1wRzkAsU
AV9SLLp1yUEjMImIEYJYnB6AEEn6EH3FAFigAoAKACgAoAKAM+bQtHnleWfS rGWRzlne3Qsx
9SSKB3Y0eHtEUgro+ngjkEWycfpQF2N8TaQdZ0traKSOC4Vw8E7CTMLDgspj kjcEqWXKuvDE
HIJBBFPw54Q07RtMltZF+2yXUTRXck5aQTq0kshUq7Nld08v3izENhmYjNAE i+EdHFu8Rju3
d3V/tMl9O9yhUELtnLmRQA7jCsBh3H8bZAM+3+H2jw6lLPm7a0e3SH7I15OV kPmzyyGXMn74
O05ysgYdeoYigDrKAKdjpVjYXF1c2ltHHcXj77ifrJMckjc55IXJCgnCjgYA AoAj1LRNO1S6
t7m+t/NmtceU29l24lil6AjPzwRHn+7joSCAV9U8L6Tqmom+vYZ3meJYJFW7 ljimjUsQkkas
EkXLvwwIIYg8HFAAfC2jNeTXMln5vnby0EsrvbguCHZYWJjVmDPuYKCd75J3 NkALLwvpNlPD
PHDPLcQS+ck9zdyzyhgjoBvkYsVCyyYUnaC7EDJzQAaf4X0nTryO5tYZw0Of Iiku5ZIbfII/
dRMxSPCkqNijCkqMAkUAbFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1 Ofun88ceq9QA
WKACgAoAKAK7r/xMYW29IpBu29OU4zt46dNw6dDjKgFigDnfEF6ILyeK6uNQ S0EEQ8qysTdF
i5lzuVY3bGEAzgD86AJNG1PzJpma41C4tzBHJGLmyaKVTulDZTy1Yf6vjI54 xnIyAXNcuZ49
JeWy+0K6yopMUBeQL5qq5ClTn5dx6HjkVlV5uT3dyo2vqc3qep60kcv9jyal dOIJGX7TZtFh
gjEYH2cAnIGBuGTgY5qKKlf35P7lb7wk+yX3m82rXOl+EZdY8QWywz2dm9zd QWzb8bFLMFyQ
M4HTOAeNx6noJMfWviRomhywR6ms9q0sX2h1naKF4oSzKshjkdXbcEY7EVpB jDIrEKQCxoXi
yW7lWDUNOngafVbrT7adNnlTeU1wQQN5YYS3wxIGWIwMcgAjm+IGmxnUgtjq Ug0u3nublkhX
ascUlxGx3FsZL2zALnJ3qcYDlAA1Lx/p+kW8h1myu9Nu0eNVtLqW3RnEgkKM JPN8oAiGX70g
PyEYyyhgDP1/4gxT+DtRvvC9vd3dxFpk10ZoPIK2RHmoruXfa4Dwyf6vzAfL J5BUsAR2Hju6
i1G5l1eSBNNhu76GTGnTw+RFbmb94J2YpO22HmONd3zMekbCgDcPjCKNzaz6 RqUOqM6LFpre
QZpg6yMrKwkMQGIJj8zg/uzxyu4Ap6X4xS98Vz2MfnuslpbmKxCL5sMonuYr lmOcbUMShm3F
cgBSxdQwBseF/EMHiWzN9YWs62Dc2907xFLlckZUI7MuMchwrDOCMggAEeu6 5NZeDta1m1tZ
Ip9Pt7t44ruMruaHeAxAOSjFNwORlSDxmgDH0nxjcq81tfwyajcs8S2qW9g9 hNO7rKxTybl8
qFSF28xmCt8yr8yEEAuS+ObBIHmSyvpY7WJptQKrGP7PRXkjcyZcbsNDMP3W /wD1ZxkFdwBJ
4N19tWF5bSNJcz2t7exTTKqiOEJdSJFExGPn8sKcAEhQC2N6lgDpKACgAoAK ACgAoAKACgAo
AKACgCrqbItshkKgefEBuGeTIuOx747fiOoALVABQAUAFAFWRkGq26krvMEp AxzjdHnt7juO
3B6gAtUAZupWTCSe/hv5bRxAFbDRqhC7iCxZGx945PpQBNZWBtbia4ku57mW VEQtKEGApYgD
ao/vGgDI8Y6Bc635P2YWz7YJoR9oYjyHfZtnTCn502nHQ/MfmHfejUUN/Iyq Qciv4w0TVPE1
qtpZ38emtbzZ82CbeyH5uSNgZW2FOFdeJXByANzo1I03dq4VISmrLQ0U0Fbj wa/h/UJpCk9k
1pK0RQFFZCpCEIq4UHAOwcAZFZTkpSbRcVZJDtU8Ppfaib2LUL6wkliWC5Fo 6r9piUsVQsVL
JjzJMNGUb5zzkLiCivL4TgO/7PqN9a7btr218vyj9jmfzPNaPchzv86TIk3g bvlC4GACva+B
bCDTNWsnvb64/te0ktbmaRow5DyXEjMNqBQ265k7Y4Xjg5ALmq+F7bUNUbVF u7u0vwkKxTwF
CYDH5wDKHVlJK3MqncCMEYAIBoAp6r4Jg1GzntzrOqwNeWhs76ZHid7yMlzh vMjYLgyy48sI
BvwAAqhQA/4QWwl8+G/vb6+sJZbqZbGZo1iie48wSFWRFk5E0qjc5wH9QCAC Q+D4nc3U+r6l
NqiujRai3kCaEIsiqqqIxERieYfMhP7w88LtAC38FabbmWWKe7F1IiYud6+Z HMsk8hmX5cB2
e5l3DGwhtu3aSpALmg+HYNHvL6+NzPfX9/5YuLqdIkeRUBCAiJEU43NyRu5w SQFAAJLvQ4bz
w/qGjXV1dywaglwkkjyBpFWYuSqkjACh9qjBwAo5xQBnnwfE7m6n1fUptUV0 aLUW8gTQhFkV
VVRGIiMTzD5kJ/eHnhdoBHL4FsGgeFL2+ijuomh1AK0f/EwRnkkcSZQ7ctNM f3Xl/wCsOMAL
tANDTfDdnpt0tzZyTxzebPJI24fv1llklMbjHKq8rFf4l5AOGcMAbFABQAUA FABQAUAFABQA
UAFABQBXv22QKd2397GM7sdXXj7w/LPPo3QgFigAoAKACgCu7Y1GFd2MxSHb u68pzjd79dp6
9RnDAFigCvqTbNOuW3bdsTHdu244POdy4+u4fUdaALFAFPV7ia1st9sYxK0s UamRSyjfIq5I
BGfvetAHP2Xia1up9ul+JdD1WRpYjLBaPvcIzpGWGJW2gbh2xk+poAv+KvEV tpHhy91CCeOW
SOL90I2V/mbaFOM9MyIT7EeooGkUdA8RzMmoRXiT3L2l3JCG3whgqKmS33B1 Y8gdMfWqa7FO
Ouhs6brUGoXHkxxSIxVnBLIwIBUHlWPPzD86TTjuJxcdzFTxfNN4zuvD9vHo yvbXCRFLjVTH
dSqYUlZ0gER3AK5/iGSh5FIksat410yx05Lu2Ml6S8G6GKKQyRpJcJASyhSy uGZgIyAzNG6g
ZVsAFweKNJN5DamadJJdgy9pKqRM4BSORyu2OQ7lwjlW+dRjLDIBXsfGug3t mbqG6nSExLNG
Z7OaE3CMVCmJXQGXJdANgbl0HVlyAU9N8cWc8up/aUu1SC9+z2sMenXJuXQQ QSMzQ7DIAGlx
u2hcFP7wJAJNd8Z2VqtrHpUv22a4u7OLzIreSa3VJpolOZkGxWMcm5QzD7yH BDDIBj6d8Tft
uj6JcjSNl9qN3DFcWf2nP2SGRoQs2/Zh+Lq2O0YP73H8LYANjUfHek21i1za +fdbZYFVRbyp
58ck8cRlhOz9+q+YpzHuByoz86kgGpJ4g0+K4tIJvtcJvERonlspkjG84VXk KBUcnACMQ2SB
jJAIBl+GfFN5qVrpFzq2mQWEOtxLJYtBdm4yxiMvlyAxpsbYGIxuX5GBIO0M AF746022ay8u
C+k+0XYt5YjY3CXEQMMsiuIDH5jKTCVBC4+8c/IRQBsf21ZDWP7Ldp4ro8IZ baRIpTt3bUlK
hHbbk7VYnCtx8pwAaFABQAUAFABQAUAFABQAUAFAFe/bZAp3bf3sYzux1deP vD8s8+jdCAWK
ACgAoAKAK7tjUYV3YzFIdu7rynON3v12nr1GcMAWKAK+pNs065bdt2xMd27b jg853Lj67h9R
1oAsUAVdTtXvLTyopVicSRyKzJuAKOrDIyM/d9aAKs9jqVyI0ub60MSyxyMI 7VlY7HDYBMhx
930oAf4i0mPW9ImsJiArlHGVDKWRw6hh3UlRkdxnp1oGtDlU8HalEsig28hm LPI6XksILMqq
TjYxPCAnczZJJOc8aRqOG35GkanLsa3hrQtQ07UPPvGh8sRyL8s5kZmYx/7C gACP360pzc3d
inPmJbfRtYstev7yx1SxWx1C7juZreawd5RiKKJlWQSgDIiBBKHBPeoMyvL4 TuJILkPqu6a7
livJ2a3Gw3cTxtFIqggiMCJEMeSSqL8wbe7gFc+Bkk8RjWbk6VNcSyw3NxM+ lK9wJY0Rf3Mr
M3lRny1O0hmGXw4JBUAH8C50zQbVdRxJomnpaxSGDIkkSS2kSRl3fd3Wq5QH JDEBgRmgCnef
Dya/updR1O60bUNQluJJcXekGW1VXit4yBC0uQ4+zJht/RnGOQQAXG8FXEOy 107VIIdNa7s7
ueKWxBlZ7fyQAjIyJGpW3jGBGcEtjggAAsW3gu3t9B06wSf/AEqzi02GS62H 98lnKsijZuwu
Tv8Apv74AoAy9L+GltplqYLWTTbc26QraTW+lpFMxiljlRrmTcWmO6FN20xh svxkqUALGq+B
ZtT1m21K6vNNlnS4tbmSaXTS88bQtGxS3kMmYYmMedmHwZJDk7uACTS/Bd5H otjpWra150Om
Wn2axksLc2ksLeS0PnFi75kCMwXGFBZiVJ27QCnpvw8m06/fUbO60axvEeF7 dLHSDb2ysiXC
FpIxKS5KXLDIZcFU6gEEAuReB/L8X22ufaLFvs93LdeY1hm9k8yORPLe538x r5vyrs4VEX+H
NAHYUAFABQAUAFABQAUAFABQAUAV79d0Cjbu/exnG3PR1Ofun88ceq9QAWKA CgAoAKAK7r/x
MYW29IpBu29OU4zt46dNw6dDjKgFigCvqS79OuV27sxMNu3dng8Y2tn6bT9D 0oAsUAFABQAU
AV7pcz2h252yk525x8j8/dOOvXK9evOCAWKAOfl8Ssl00CW8OfNaNd8zgnDl MnCEDJU96tQk
1dFqDauhlz4nktnlSW1t90SlmVZ3PRdxAPl4zj3pckuXmtoHI7XNvUL+z0yz kvNSu4LO1ixv
mnkEaLkgDLHgZJA/GpIK9lruj3/k/YdVsbnz/wDVeTcI/mff+7g8/wCql6f8 83/unAAafruj
6nFHLpuq2N5HJKYEeC4SQNIFLlAQeWCgtjrgZ6UARy+JdBhvYbKXW9Nju532 RQNdRiSRt5j2
quck71ZcD+IEdRQBqUAU7HVbG/uLq2
Previous Topic:file:// and platform:://resource URIs in ResourceSet
Next Topic:Strange behavior when class with name EPackage is used
Goto Forum:
  


Current Time: Thu Apr 18 06:52:06 GMT 2024

Powered by FUDForum. Page generated in 0.02982 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top