openQA-common-4.6.1555478309.f6dfdd9b-lp151.1.7 >  A \͕/=„f-k}6:ƒphWk'{'ҍÅ:zN}Z06yzq$_ }]bcd=j5}m@qWOdPR+ؘC45kyK@7l!8-{lMezmdMELDw5`C]*)Nx;-bN}-4G1kvrb+js׳/Sn\v;+Zz%s mO:h媖ee2420d10ee139aa7a0c61ac304cbcb8c254dfea7bc39b91b25d278da99c096d031b096155e6635e394088a27cab23f6d46a7b87"X\͕/=„n]] GUZy2h΄8jY RĬR lH7ZX5C `_$؈8w x'!$|:#B ڢ}W%n[̓fh~`8ZהS)d/rģ[2f:TV~ uʈ eh7Պu9"v8*pm8b; D&P8by9OR .h2vtHIm3žKDt 8>p@|?ld( 2 g +PV]t r    p 7E 8L;?CD$GxaD+a+e+(f%8f,9hx:q=\pF\xG\H_Ic4Xd Yf\g]k^s/b{c{d|e|!f|$l|&u|8vwxyXz  &hCopenQA-common4.6.1555478309.f6dfdd9blp151.1.7The openQA common tools for web-frontend and workersThis package contain shared resources for openQA web-frontend and openQA workers.\͕lamb52WopenSUSE Leap 15.1openSUSEGPL-2.0-or-laterhttps://bugs.opensuse.orgDevelopment/Tools/Otherhttp://os-autoinst.github.io/openQA/linuxnoarchif [ "$1" = 1 ]; then # upgrade from openQA -> openQA-common (before -> after package split) # old data needs to be moved to new locations else cpio fail during package deploying if [ -d "/var/lib/openqa/" -a ! -d "/var/lib/openqa/share" ]; then echo "### performing migration of openQA data" mkdir "/var/lib/openqa/share" if [ -e "/var/lib/openqa/factory" ]; then echo "### moving /var/lib/openqa/factory to /var/lib/openqa/share/" mv "/var/lib/openqa/factory" "/var/lib/openqa/share/" fi fi fi")#9a $b):M $ e 2? 6C ; "" (K"-+ R@CX3  5z/8 K>Y  _/S ;[wc1Y([N$OJD5 $h x@% 8c( w @Sju2 &) 3/) 8  Z&[4$3%  H {R4-Zp#  AAAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤AA큤AAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAAA큤AA\͕\͕\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\%\͕\͕\͕\͕\͕18090ce2209ea614a886d6bbf06c6dd5e6692d89780d45fea832637936be5cc9db234a28d143d66d98c7bebab327575bb011d272114763d66a28889883c057171afc8f570b7791988d465a769fa476f4a9771cc956d0c467bd6c8250989840304e7c1dc5d49f33cd86e819f090d2016a860c5c72c235950fa802d06889a02c480f5c893a4c639571b0eedf84d0a0a5507d16aeb985cfa097c445a110592ad3b28626476dca80b7d31a7fee234b43945688916d97f01ee327ceb73d240e9fc07e9575dd73dcffb902d415559aa787ce13a7b28f76969bfd6388825f6a03d1eccf4931e0e12efdb98c850d383ae4d8cc1bc0941c12d7ddb9df95b071ff40323df670302f065259bd96e73d9f422e466aed5e4029ad1d079432cf65daad7fac8d969b666ce0e462b6cd18f27e19d38226a201705bd5711734c33f158cb67c1e6d41be86abd41478ead51ce3ff25dd73150650af332cb20c5d481ec3bb3e91a932ba6100c6902aee3cb334c359a10e45e5e0ac8cebeb10c3806c1b441a41843bc8d1cac778419a8fab698427c064089626c18a7153349f23a8ea389c7571b0d5f66f924c75d524944cc48e7153beb8540f828d7aa909e30f1e48f5e7ea1db019f52d202d5e9518001b2ea282782b0d2c5c7e48d611723f1ed545620ead2d6ebea99271505e7c218639b32fd12496a6552956018eb7fbe426847a488c82545fe4fb4b9bdba592cb8b1f4deb1e13a71c98a9ec1ad9bf59927d0b625b6b029c33017c1ee9513e126b1c249307dbb3d8454f6112f20d05dae62e654ed2b82e6aeea6894f7e57eec5aa9dd944ac828e8f5727ef63911a2165ac9898aaaf8d5d8677e3bc67eb2e8111b88500fe4649453e7eb9f3dc3d1eb8488bca25f28e6ce8cbec6c725d596c93b9456a7372304ce50c36bf945efed9f2b50a8025f27cf7469d68b21f51a739a25dc4ad4edc96fa1361abf823cdd316470ea5b5fb4c5e7d738d4196177535950501f5d4039084fc42b616eb1e7c842bcfd2eb0f443b99c92a733879f5b39f5e9c8efaf209327124948a7e9708f44451235876235f17cc3c70d4e3ace9524fdd11417e73d5632d34a1d5a4ba687d7e4ce4a4cddc7f9090dcdf01360d4aa01c727ef84c550ff998470fb8833618cc240d93cef7410937ed2c6c3847dfad396047e52a81351ba39bcf361d2a1096b2c5d47add723bb4bcb6ad851b446819ef587d8f721daba77b7a84c029fa42bff737c64e93c555f8102f0c32bca178913ebe3b17fd904153fcb50db9c2b616d73683a763079d474d477901d5ef95440a4799a153fdccc8e845a19e314e4d9dedb6603e9024bc1d201913530749cf26a81bda5200a58bacee1c8aeaa1f536ff10c709e7e2483e927d590bec64a0c9f3873ec5f14516113b68b82725b8386d9502633c0f66c2831a14abe9d48709073c6213f1cc04048f3d8b0bb2a85324666b71c2058f6ce44af6358ff3ab52591bdbf731b937f3428c6185f9bc2e0a4fdc1f61066263025e7fe462647f05d331bb2e58872f8bb484c1cf31c5473b42fa8ce9148fafcc6e24f414c8d06f85ab5d57f4ef3ff32acc49790c16bf322ed7444aa65313ea4ed26d72df37c8e6d0604e0e132eb501cf83ad7f30bfc1fd3cebdde62a541aca13c4d58630256cb3762511549c8a978ba324a317b6fd83e15af11f8f3186ab17bbba6fba6a5f66485904c531496ea8e9e29fbce97e51ea33914544d9c3f9eaa67b9054c3bf929b27ca5a788d8bb125d501c0b440587d4876f3d1e47870d98ed7d746a085fd02a01595497f29da565c8d7627fb0e80e0e14d246028d7db85e4a0ed741dfbdad8af45d0a2957538b89c81ce3e990aa84bb67df8c5867f50f68326aa6b4d0c68224d14e06425b01a09639fff76a2302b34557dc6a1be9dac33d448570d146aa71bb101afcbfb8c5cb2c4a882a600c1bd4c297582d4c4a20af4243ee5d1b25f0605dee7517382b7b9d42aeab57a7a6739e18946d6d24e7a229fb28daf087562c7c8481d6ea07256e3cfaba6a5cb1b9fcbd2b3aa8bf3b63e209177e503619bf1ac5876bdb0c1418c099b833bd9bd2201b05ed6e90dcbd5aa2d12d37643061b12f65cbf1c9a4fff38aa5aeb743a1632ebed33b257adf86ac2d7ffe1c1968474bd333d4456a277290af1cccbbce7e7dc954af3ff779974e9b8481346a264bf7086353ef7550eb79f8c3e69a10f8b6b6238c7e128d38b2cff955d0bc99f49c2ba3ecdeb3dff2c66691136e0f89041b162d56daf63025973149317d251e5c2f6db1e64d8a330521e2f284562013c9b321b13aef6f0d333ad06bdec919e3350dc1496e46fea4a6f5bc5ea280ca44f34cba0ddfa3151260ae52b611755e8927d05a5c447a04d5460f3d201d89c3e39f96e7c8625afc998e06e6a4b1828c6169538bd11ec486766da6dac5543853b99c821e7c3455efc77fcd7e2509f8073883bf07b30ae33cb3ef88db297c4d1e7d4556e4a54890e762f1488757bd9f6a4b7d6da3cf776be3e79b92d0441827d104501a827b5c9484c5dedc46d0b949169b3164dee8c455d043b0cca09e5601c874d5d4a25698ae9be25667bb8d6e1d6b2c6757ff07dfa7d0dd39a42bcc3c73a445316cb44d237e64f9b0a244f2b1c27a3296522fe4e4b99d46564564af87fc9c690f54df5d7c55c13c45c9201555cfd2ff07f3c835a482e0f702f2e04a9bab7aac9f3ac139ea0d43e8ce4e14b596dd918bc248089077659f2afd9c28c932e38660c11b75e50b012b3b8333001e25019430db28d04fbd576a89e945248ddc1fbd992baf8acf2291907abe718409b9bbd36a9259fe0bc9398e799c2739992e60655f0e2cd6061af49a0175ae6f4561c907188bddc933500f45f0f443a3a57055c4960832850e002da2ca91774575e3d129ce41fb31624a27a601d500ba555b053a62b0ffb0a28af91d1d836b1a87b251de0f1a8136d2042f58842e88dd5e7e61b21d6618b0189256535e29f605a2f7d7496db1c6444fc02badec639099feda1d06fb47a6638aa96e4018faffa85f4e75c623e4c5f3c8fb30c15497f9a7c944dbabda09faf206fe29368d2ccbcb71800edd813e1c8d823b3fce5db1dfbfe02a5a3fd09b7050f6396f6a90be0ab3ec07d522ad153e4438c48ec6965db04309c502f2eda6ff229d28a0a645690801754d511a65750a676c748f43e73fc2146d31a7f1acfe6664a4b794878cc8bfe4ed2a1e4ad39710c0385fa1fb4ac2b472abdc129cdc05130a6d8e8db4ca9237da5fc13bca4032b9ccad096ff3476e5977a92a263dea387f1a56fe488eeac4cf16924cc4ddf1554de0830a2969b3b30b6840c8346649beafa871aae42bdcdf75a4f412d43f705307c51c49b29fc3d2e63eb5bc91500b80f54ae96648a2e56fb933ad30bc06298e86d7b6c57ea277f9418a87b8a13a97bccaa10c145632e201f2b3488d5e4391fdba44a7b0eabada83f7eaf21a721c8358578cc645d4a1d3fa9021b214acdc40654a2090605610f30e95d4158c81b90b69317bd87d98b64c4d437a9458805398558db7abbfa8d6f9b4e6bccb576bd67a118b38a68c2b5d5c11393cbea912a2ce734a9cda3b954ec8e995d227cdd17cf98965301f798b7a4d02a4e049b720b1247b5fcd2f37c6e26e7615ebf561c7fafdb1894a7dd1e1b0e0e3b9866826c7dbe925660f9bdf876fe42b16241d917863090dba554bc032fa724d5d504538086d1df88938c2b45513ed72da1d898eea2dd3f0eb75f82ec37ced1cf1cf8178e1dd918e8162bf5612208b83865709618b5a9d86afac37f5481f5850b4ac837b9f9b906a57a68c70ff0f2e29863018d25811d93db69124d64f0f2d5704b839eb3e6d11d1b464f162050bd0e245ffdc9ad86f103239e33a90b85471a8628d018322fdc7dbd35e67f8fa8cd6553a6e46e7fc89de602764f457fefcf85ae90888e7ca1b7d7e3bdb16c495488d8302b05b023cd22eb7351e129083f608b2ce27a2598a30c36d754df83c75ebddc3302b2f61888de5e08af45370ca318f43fc044108102ef959cc387db2ccd835ed1412c6c3df70fe35e81fb4860387f833efacd0439d7224174eb83787fa93e9a80d39310c52153a03470766e0c0cd9530be6bc373224604238155cbbccfc83bb59661c76a101eb1b95da0456a100e84442ad26d25da9ce03c5ead2dcaede36c592b4417f60a5aac4a777688e8e7b404c0de0421053ddec4a1805c0a4449297ca6ecf4580701fbf53292bebeddf9e650886f22bb93c7b54ffa6ab841be9a959682383163573ebac825903ea26e7d235286999eb109057d7db2f38f09041ec94c6a4371577b856e8ad034114442ac3fd3c3a4a9a397c9c4bf504cc4c01f8d0a168d4799a0f451b4f51b22b0bb51e30edb748258560c939f09d91becc5ed7d320f07203ec2d3319c2f971ef1b882af106e459acf3050e58a4d860b52f4a0967dad07aee14f3ff9733bd057f5c88d82e8f3f74358c0d54ebe43b277d4f8e1ad6f2f3e112a26c057a6e8b6bcb360feb667e1155d5d89ea8753c9a08a94d250be41ba3c5e4edc6ee00c777861cdaeb12dc60d3ebeadb18fd60cc56792f73a7b4cc30b511c36e493fa9164904cb9037aa1fb1433b9b717d11d8d0a03899fb8667501851192e75a3e27abebbf3b6caed795582237549438a9e22b80119360a312630469470c0f130103b02db8904fcdd33ab4a77ed4dbbd01ed8ca82e5b7e45d0a636811b7bd493f5b7f008cccd69a26e863487383b5732ca6e211724fabe7c36c8b7cf18eb2de99227f8db5a7ff31c0bdfc75acccd1ca8888009add138051b5ae0c3399d315702b9303b42d3e3ecae589d44ead8c1e1e228be346517c54a72f04d2b65414efea8ede451a877730087897f649968d38e577a9fe13b1afdc9994daa02043e320ca70e83ec9ea7a95d5501f99872ab541ea9a0db90b1825c7c02a968958047f4f4f7e88f22a06166fa41861ec27046b432a22b4c154b94815cf41a45275377cc798c3330ff4d38e74fe3b98f37f65dfc095bd38e3a55cf03da37c5aa08212ce944ac3fd1729cf60686f0ded75064db8bb93050188dbaf9443347d1acfc7e04652feb8d22cd4038f9aeec723beec21618afe63478d1834003d38f848ee1520908ce9c24476f5772d49ad4619bc6ee12e6162e2ca645ac2706d1040b6c63490503862ecce94399387c6179d78cf4f921c27221a4ce8444c2b0d0451bae26df28bcdf4c04bec399789b2b457be90a764e17536d0840bb3ffdd1e88756ef8b508240bd58b08782cc7d65dca4378e7bd1d89b4b821ed4fbc6faa549d0312043980f0fa34dbc16330c64f5d33679ec2773b64e32299c90fd3d466171ca4933d26b4b18c56ba6167cc765643eba907d28392acf7b2fb22b6f3e0e48710fac9cbc0da0b5d9e22ea1231b949c26bb41601a2dadc6aa78f092bda0c217fb620c31e6e474a9429f9af95fbcd024ab3a6437e63f6e9d31d5e442493afaaa50d98d6cbc901250cb190c5b042683c91a3225aca0cc7058bd27982f02a7e865db381e79b8025d7a3c5f195d011f81fa839acf91ea831c7c6c599a1f37d63566a17da96873208d3200ea03b397be520cdbbbc1d9224a353f52182e8c78004756b89acc3f49d7175e09f72b74b5bd5de184ef854f1f98adc9145294542a4dbf148e56fe33612ff73961796e6660f9cb64cbbc76ef5b185888e4d0b2c557b22cbf301f72a6a35238c329c207812e58d8e44016131775c40d1b4e82e93aebc5b181c7aa71506e03c6af69a8fe8611eab3794b10e9489b7043d561ffc4a890341afc12240f1a1a890210e5b8d207f54eb6e0609300f10549c62dd337059e671d6357665b495a3f51b4aea570a8ad4fd2401f736dc103a15e9ee90c292ba5e7d08a28430cc5488d4a459b287b2dae835075dea3d3a36d70678e7881a74e7f834961cf5a726f360ad45c3e7b638496503390f845ab6ec60bc30b5a69f79002569f415dc76bb32781ebe1afa5eed93e618349782e97e26d50ffe71662c557f5d91f75787b74c2ce8de1f02227a3e6cb2f242bcf548f7117880a586478549a1170151328627b0d42ae41f0484ea437693fb6529953c143fa419a0eae6d4aab353a1227d37cfa8ee33e4e88543e4055379f119f5210a51c0e2e20ecfdac4d484b89e6e2737dd7ed3046d89bd24e65fb1bf1502fcadbb9cf77ea14c45ebe9a77a0699d58a53ecf4c0890b548445475c491a1e938e8acbbb9855a6852402aa4cd5558edf72206973f2a5f8028e24de39986e2fbbd4eccf5d8631f872160c7dd9204b323f2762309996a91f9561ce31cb56a329895da175d44c6c46f60693883de7370d9960ff4385fee8b2ce24aa5d8ca709c14ff86a42ed72b2d578fb43ff329335204e02d9be52d7b082740df21692d0cb4a903c4b39c6d2a2a4ba8aaacdc92b4c08e0dc802b0b0c0a82c021c81b9653e875e33e892897b89e423b22c7afdd76d24e6413a8c5a15c564823a141cc0bf2e01227b28fe8854cfa93e9081be117d268f4a9c215b21ed4da7f5b92baf8731b1c422fa7656af3085577da0c1afffb63465061b325d54f0817b1792e3641779a1f325a460f6ab93764d3a0cd821c50d691b5099ad146423541ab7b21719b35913d033846ab3a4d97c080ed9997c507c1b45e79f1a569c0fe178c8e948dbc1e36dd62bfa31c4d19e0bb87d448f91a6c1fe0c63b9041db6f8bacf75ab9d32242c50675ed7c6efd4db8ad39bacae79b7297a78f23656a7c1108754e6bb7d7bcb77744140bb3c70ff96321e0ba2c15bfb2f1f5eb22831c4f20762f2e355f196c82ecd7657eae8d83574d8290aa83a3a6822d55a7669408afd6f297dc8efa63cfc9227bcc8ea37752b59b69b063e50cd551248ceea61c7c4698d018cd0a981e43b21687eff7f0d8c6cd76e7583f214b88177f3dcd65541f0e710bada5dd07a3742aca2804ec2cd05797022e1a0810e6aab22887e75c552d4210696c2d0c8e1a2157d0ccc6ede46eff0eed08cc419f232c4ade3360df054a7b26be147dd212f76fa7d399600e6c3f33c311ccb28174b8a4c89c7f287565d16e68e46e155b4b271a1e8a337fa3d1febc67e077363fdb4f7f0d808e5cbfc62be73298c01055797db775c718a5ccc99b2de1f80aad8e74c8aa4c5f5a147ea3ae9ef24f087f3bf2d6b6d2e09ac61386163e0466a1be97154318cdeb2f6b39f994535702ae0ac9d4268e12b9176d4058f157c3a3b05d5d9543ed75fc3bea437e6d0eda87136469b93fe2bc157fdbb5223afb6853fa736311f98388f4e884bbabac91d0dd394dd788f53f8f0b24d57b328ff5a722b9f43a393aed0ec5c8bd282ddd6cabaa147ad218c374bec7dd5f356f1b6be13b5b11dd75e1b5867bcf488635e3682e1c68fcfdf5f4acff98a9a7share/factory/usr/share/openqa/scriptshare/tests@rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenQA-4.6.1555478309.f6dfdd9b-lp151.1.7.src.rpmopenQA-commonperl(CommentsMarkdownParser)perl(DBIx::Class::Timestamps)perl(MojoDebugHandle)perl(OpenQA)perl(OpenQA::BuildResults)perl(OpenQA::Constants)perl(OpenQA::Events)perl(OpenQA::File)perl(OpenQA::Files)perl(OpenQA::IPC)perl(OpenQA::JobDependencies::Constants)perl(OpenQA::Jobs::Constants)perl(OpenQA::LiveHandler)perl(OpenQA::Parser)perl(OpenQA::Parser::Format::Base)perl(OpenQA::Parser::Format::IPA)perl(OpenQA::Parser::Format::JUnit)perl(OpenQA::Parser::Format::LTP)perl(OpenQA::Parser::Format::TAP)perl(OpenQA::Parser::Format::XUnit)perl(OpenQA::Parser::Result)perl(OpenQA::Parser::Result::IPA::Info)perl(OpenQA::Parser::Result::LTP::Environment)perl(OpenQA::Parser::Result::LTP::SubTest)perl(OpenQA::Parser::Result::LTP::Test)perl(OpenQA::Parser::Result::Node)perl(OpenQA::Parser::Result::OpenQA)perl(OpenQA::Parser::Result::OpenQA::Results)perl(OpenQA::Parser::Result::Output)perl(OpenQA::Parser::Result::Test)perl(OpenQA::Parser::Result::XUnit)perl(OpenQA::Parser::Result::XUnit::Property)perl(OpenQA::Parser::Results)perl(OpenQA::Resource::Jobs)perl(OpenQA::Resource::Locks)perl(OpenQA::Scheduler)perl(OpenQA::Scheduler::Scheduler)perl(OpenQA::Schema)perl(OpenQA::Schema::JobGroupDefaults)perl(OpenQA::Schema::Result::ApiKeys)perl(OpenQA::Schema::Result::Assets)perl(OpenQA::Schema::Result::AuditEvents)perl(OpenQA::Schema::Result::Bugs)perl(OpenQA::Schema::Result::Comments)perl(OpenQA::Schema::Result::DeveloperSessions)perl(OpenQA::Schema::Result::GruDependencies)perl(OpenQA::Schema::Result::GruTasks)perl(OpenQA::Schema::Result::JobDependencies)perl(OpenQA::Schema::Result::JobGroupParents)perl(OpenQA::Schema::Result::JobGroups)perl(OpenQA::Schema::Result::JobLocks)perl(OpenQA::Schema::Result::JobModules)perl(OpenQA::Schema::Result::JobNetworks)perl(OpenQA::Schema::Result::JobNextPrevious)perl(OpenQA::Schema::Result::JobSettings)perl(OpenQA::Schema::Result::JobTemplates)perl(OpenQA::Schema::Result::Jobs)perl(OpenQA::Schema::Result::JobsAssets)perl(OpenQA::Schema::Result::MachineSettings)perl(OpenQA::Schema::Result::Machines)perl(OpenQA::Schema::Result::NeedleDirs)perl(OpenQA::Schema::Result::Needles)perl(OpenQA::Schema::Result::ProductSettings)perl(OpenQA::Schema::Result::Products)perl(OpenQA::Schema::Result::ScheduledProducts)perl(OpenQA::Schema::Result::ScreenshotLinks)perl(OpenQA::Schema::Result::Screenshots)perl(OpenQA::Schema::Result::Secrets)perl(OpenQA::Schema::Result::TestSuiteSettings)perl(OpenQA::Schema::Result::TestSuites)perl(OpenQA::Schema::Result::Users)perl(OpenQA::Schema::Result::WorkerProperties)perl(OpenQA::Schema::Result::Workers)perl(OpenQA::Schema::ResultSet::Assets)perl(OpenQA::Schema::ResultSet::Bugs)perl(OpenQA::Schema::ResultSet::DeveloperSessions)perl(OpenQA::Schema::ResultSet::JobSettings)perl(OpenQA::Schema::ResultSet::Jobs)perl(OpenQA::Schema::ResultSet::Needles)perl(OpenQA::Schema::ResultSet::Users)perl(OpenQA::Script)perl(OpenQA::ServerSideDataTable)perl(OpenQA::Setup)perl(OpenQA::Task::Asset::Download)perl(OpenQA::Task::Asset::Limit)perl(OpenQA::Task::Iso::Schedule)perl(OpenQA::Task::Job::Limit)perl(OpenQA::Task::Needle::Delete)perl(OpenQA::Task::Needle::Save)perl(OpenQA::Task::Needle::Scan)perl(OpenQA::Task::Screenshot::Scan)perl(OpenQA::Utils)perl(OpenQA::WebAPI)perl(OpenQA::WebAPI::AssetPipe)perl(OpenQA::WebAPI::Auth::Fake)perl(OpenQA::WebAPI::Auth::OpenID)perl(OpenQA::WebAPI::Auth::iChain)perl(OpenQA::WebAPI::Command::gru)perl(OpenQA::WebAPI::Command::gru::list)perl(OpenQA::WebAPI::Command::gru::run)perl(OpenQA::WebAPI::Controller::API::V1)perl(OpenQA::WebAPI::Controller::API::V1::Asset)perl(OpenQA::WebAPI::Controller::API::V1::Bug)perl(OpenQA::WebAPI::Controller::API::V1::Command)perl(OpenQA::WebAPI::Controller::API::V1::Comment)perl(OpenQA::WebAPI::Controller::API::V1::Feature)perl(OpenQA::WebAPI::Controller::API::V1::Iso)perl(OpenQA::WebAPI::Controller::API::V1::Job)perl(OpenQA::WebAPI::Controller::API::V1::JobGroup)perl(OpenQA::WebAPI::Controller::API::V1::JobTemplate)perl(OpenQA::WebAPI::Controller::API::V1::Locks)perl(OpenQA::WebAPI::Controller::API::V1::Mm)perl(OpenQA::WebAPI::Controller::API::V1::Table)perl(OpenQA::WebAPI::Controller::API::V1::Worker)perl(OpenQA::WebAPI::Controller::Admin::Asset)perl(OpenQA::WebAPI::Controller::Admin::AuditLog)perl(OpenQA::WebAPI::Controller::Admin::Influxdb)perl(OpenQA::WebAPI::Controller::Admin::JobGroup)perl(OpenQA::WebAPI::Controller::Admin::JobTemplate)perl(OpenQA::WebAPI::Controller::Admin::Machine)perl(OpenQA::WebAPI::Controller::Admin::Needle)perl(OpenQA::WebAPI::Controller::Admin::Product)perl(OpenQA::WebAPI::Controller::Admin::Table)perl(OpenQA::WebAPI::Controller::Admin::TestSuite)perl(OpenQA::WebAPI::Controller::Admin::User)perl(OpenQA::WebAPI::Controller::Admin::Workers)perl(OpenQA::WebAPI::Controller::ApiKey)perl(OpenQA::WebAPI::Controller::Developer)perl(OpenQA::WebAPI::Controller::File)perl(OpenQA::WebAPI::Controller::LiveViewHandler)perl(OpenQA::WebAPI::Controller::Main)perl(OpenQA::WebAPI::Controller::Running)perl(OpenQA::WebAPI::Controller::Session)perl(OpenQA::WebAPI::Controller::Step)perl(OpenQA::WebAPI::Controller::Test)perl(OpenQA::WebAPI::Description)perl(OpenQA::WebAPI::GruJob)perl(OpenQA::WebAPI::Plugin::AMQP)perl(OpenQA::WebAPI::Plugin::AuditLog)perl(OpenQA::WebAPI::Plugin::CSRF)perl(OpenQA::WebAPI::Plugin::Fedmsg)perl(OpenQA::WebAPI::Plugin::Gru)perl(OpenQA::WebAPI::Plugin::HashedParams)perl(OpenQA::WebAPI::Plugin::Helpers)perl(OpenQA::WebAPI::Plugin::MemoryLimit)perl(OpenQA::WebAPI::Plugin::REST)perl(OpenQA::WebAPI::Plugin::YAMLRenderer)perl(OpenQA::WebSockets)perl(OpenQA::WebSockets::Client)perl(OpenQA::WebSockets::Controller::API)perl(OpenQA::WebSockets::Controller::Auth)perl(OpenQA::WebSockets::Controller::Worker)perl(OpenQA::WebSockets::Model::Status)perl(OpenQA::WebSockets::Plugin::Helpers)perl(OpenQA::Worker)perl(OpenQA::Worker::Cache)perl(OpenQA::Worker::Cache::Client)perl(OpenQA::Worker::Cache::Request)perl(OpenQA::Worker::Cache::Request::Asset)perl(OpenQA::Worker::Cache::Request::Sync)perl(OpenQA::Worker::Cache::Service)perl(OpenQA::Worker::Cache::Task)perl(OpenQA::Worker::Cache::Task::Asset)perl(OpenQA::Worker::Cache::Task::Sync)perl(OpenQA::Worker::Commands)perl(OpenQA::Worker::Common)perl(OpenQA::Worker::Engines::isotovideo)perl(OpenQA::Worker::Jobs)perl(OpenQA::Worker::Pool)perl(Perl::Critic::Policy::ConsistentQuoteLikeWords)perl(Perl::Critic::Policy::HashKeyQuotes)perl(db_helpers)perl(db_profiler)     /bin/shperl(Archive::Extract)perl(BSD::Resource)perl(CSS::Minifier::XS)perl(Config::IniFiles)perl(Config::Tiny)perl(Cpanel::JSON::XS)perl(DBD::Pg)perl(DBIx::Class)perl(DBIx::Class::DynamicDefault)perl(DBIx::Class::OptimisticLocking)perl(DBIx::Class::Schema::Config)perl(DBIx::Class::Storage::Statistics)perl(Data::Dump)perl(Date::Format)perl(DateTime::Format::Pg)perl(File::Copy::Recursive)perl(IO::Socket::SSL)perl(IPC::Run)perl(JSON::Validator)perl(JavaScript::Minifier::XS)perl(Minion)perl(Minion::Backend::SQLite)perl(Mojo::IOLoop::ReadWriteProcess)perl(Mojo::Pg)perl(Mojo::RabbitMQ::Client)perl(Mojo::SQLite)perl(Mojolicious)perl(Mojolicious::Plugin::AssetPack)perl(Mojolicious::Plugin::RenderFile)perl(Net::DBus)perl(Net::OpenID::Consumer)perl(Pod::POM)perl(SQL::Translator)perl(Sort::Versions)perl(Text::Markdown)perl(Time::ParseDate)perl(YAML::XS)perl(aliased)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)7.923.0.4-14.6.0-14.0-15.2-14.14.1\@\ \\\@\@\Y@\~d\zp@\u*@\q5\k\b@\`@\Yz\V\R@\LK\HW@\A\73\'@\@\\I\\ `\[@[@[@[i@[t[Q@[ @[{[m~@[D[2*[(@[$[!@[)[[@ZnZZZ@Z@Z؄ZЛZЛZJ@ZJ@ZZZ@Z Z~ZyZp^@Zg#ZYZTZ;@Z'ZOZ@Z ZfYq@Y@YYYY}@YI@Y7Y0Y-^YYYX!@X!@X@XXXwoXwoXwoX[@XZnXRXRXJXJX<@X2X!@X!@X@X@X TW$W@W0@WRW@W@W@WgWN@W @@V3V`VVVV.UUAUmU@UUa@U%@U hT@T@TT T@T@T@T-@T@T T@T@T@TT@T{Ti@Td@TR(@coolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.commarius.kittler@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comedigiacinto@suse.comcoolo@suse.comcoolo@suse.comedigiacinto@suse.commarius.kittler@suse.commarius.kittler@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deokurz@suse.comrd-ops-cm@suse.derd-ops-cm@suse.derd-ops-cm@suse.deokurz@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.demlin@suse.comslindomansilla@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.desantiago.zarate@suse.comrd-ops-cm@suse.decoolo@suse.comokurz@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.deoholecek@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deoholecek@suse.comoholecek@suse.comcoolo@suse.comlnussel@suse.deoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comlnussel@suse.delnussel@suse.deoholecek@suse.comlnussel@suse.deoholecek@suse.comcoolo@suse.comlnussel@suse.delnussel@suse.decoolo@suse.comcoolo@suse.comoholecek@suse.comsfalken@opensuse.orgoholecek@suse.comlnussel@suse.derd-ops-cm@suse.deoholecek@suse.comlnussel@suse.delnussel@suse.decoolo@suse.comcoolo@suse.comoholecek@suse.comlnussel@suse.decoolo@suse.comoholecek@suse.comoholecek@suse.commlin@suse.com- Update to version 4.6.1555478309.f6dfdd9b: * Clone only the latest revision of the SLE needles (#2048) * Revert "openQA.spec: multiline macros for services and dependencies" (#2051) * Update architecture diagram in accordance with PR 2043 * Fix the remaining issues of deleting workers * Get rid of a few warnings that make test results on Travis hard to read * Be a little more strict about WebSocket server response codes * There should be no need for AssetPack in the websocket server * Trust connections from localhost to the websocket server to avoid complex config file requirements * The websocket server is no longer a dbus service * Clean up tests and remove a few connection warnings * The websocket server is no longer a dbus service * Move ws_send from dbus to HTTP * Move ws_send_job from dbus to HTTP * Remove ws_send_all dbus function, which was actually unused * Remove first dbus function from the websocket server * Add an HTTP API to the websocket server * Don't return status 402 on worker deletion failure * Fix indentation in admin_worker.js * Make OpenQA::Events::emit_event a non-static member function * Update AppArmor profile for usrMerge (boo#1132350) * Add cacheservice as part of openqa-worker.target * openQA.spec: multiline macros for services and dependencies- Update to version 4.6.1554809752.3a77164a: * Fix mock session logins to use only public Mojolicious APIs and create users with a proper resultset * Prevent multiple limit_* tasks from running in parallel * Allow deleting offline workers via API and web UI * Don't duplicate settings in iso_create/cancel events * Adapt product log test * Add test for re-scheduling product * Migrate 'iso_create' events to scheduled products * Show scheduled products from new table in UI * Test async flag for iso post route * Move constants for job dependencies to their own file * Add API route to query scheduled product * Add async flag to ISO post route and table to keep track * Cleanup scheduling functions- Update to version 4.6.1553599469.57d6b3ca: * Properly escape bug titles * YAML output for job templates and schema validation (#1999) * Make the websocket server testable as a normal Mojolicious application * Add a model class to store worker state * Move more functions into helpers * Move dbus functions into helpers * Add controllers to the websocket server application * Install test distri deps on bootstrap * Turn websocket server into a real Mojolicious app * Use Mojo::Promise in enqueue_and_keep_track * docker: Add IO::Scalar dependency * doc: Reflect renaming virtio_screen.pm to serial_screen.pm * worker: Upload serial_terminal.txt for svirt backend * Unify schema access in OpenQA::WebAPI and fix the issue where the db helper was called on the application * Use result_p to track Minion job instead of timers * Improve logging non-scalar error info of GRU/Minion tasks * Extract common code for saving and deleting needles * Fix test for dependency graph * Don't let needle-related tasks fail if the cause is uncritical * Make needle deletion a Minion job * Setting to not cancel parallel parents with still-pending children * Add hints to fix dependencies when using devel- Update to version 4.6.1552567428.80082fe5: * Test create and delete events for job templates * Unify schema access with a singleton method * Use route placeholder types whenever possible for cleaner routes * Add link to relevant documentation in the job group settings * Cache result of OpenQA::..::JobGroup::load_properties * Allow disabling bug carry over on job group level * Remove dead validation code and replace it with route placeholder types * Pass affected_rows correctly in openqa_jobtemplate_create- Update to version 4.6.1552406543.b3e49dcb: * Remove check for $OpenQA::Utils::app * Move get_bug from Result::Bugs to ResultSet::Bugs * Add bug to db already on comment create or update * Add support for links to jira tickets * Rename tmp_schema to search_path_for_tests, which is a little more descriptive * Allow monitoring of Gru/Minion with a new public /admin/influxdb/minion API endpoint * Log job group events via audit log * Make openqa-webui.service depend on openqa-gru.service- Update to version 4.6.1552078716.6b292c9a: * Test deleting job from worker's job history * Move another class into its own .pm file and do not use private functions/methods across modules/classes anymore * Remove all uses of the enterprise operator and use a more consistent coding style in the affected classes * Add loading indication when saving needle- Update to version 4.6.1551963862.0a6b30be: * Prevent deletion of worker when deleting its current job * Prevent broken rendering of unknown result types * Add unxz/xz to apparmor profile to fix poo#48743 * Don't hardcode remote and branch names for saving needles- Update to version 4.6.1551797932.a5aadf24: * Remove safe_call from OpenQA::Utils since it is no longer needed * Cover more Gru special cases with tests * Remove resource allocator from architecture diagram * Mention the possible race condition in a comment * Bypass Gru special cases for non-Gru tasks * Use a completely new task for testing so we can replicate more edge cases in the future * Be a little more defensive with removing Gru tasks * Allow pure Minion jobs (without a Gru id) to bypass special case handling * Do not delete Gru tasks if they are not finished in Minion yet- Update to version 4.6.1551454083.e27d66d8: * Extend apparmor profile for all Git commands we use * Correct limit_assets task arguments * Allow test vars for openqa-clone-custom-git-refs… * Fix updating needle Git repository * Fix uniform box widths of dependency graph in current Firefox * Move JSON::Validator and YAML::XS to t_requires * Drop the `cpanfile` changes * Add YAML::XS and JSON::Validator dependencies * worker: Skip announcing stop if isotovideo already exited * worker: Fix "final status update" * worker: Refactor _stop_job_kill_and_upload * worker: Remove extra handling for dead children * worker: Make API calls when stopping job non-critical * worker: Treat upload failures as API failures * Raise an exception if deploying the SQLite database fails and handle an existing database more gracefully * Do not reset the job queue every time the cache service is restarted * Test cache service migrations * Use Mojo::SQLite migrations to handle schema upgrades in the cache service gracefully * Remove unused imports and IPC objects * Remove the resource allocator * Move barrier handling out of the resource allocator * Move mutex handling out of the resource allocator * Remove first dbus method and use OpenQA::Schema directly * Declare the DBIx::Class dependency properly * Move OpenQA::Resource::Jobs handling from the resource allocator to the webapi- Update to version 4.6.1551101052.7f891940: * Use well-defined worker config for fullstack test(s) * Adapt tests to default WORKER_CLASS * Assign default WORKER_CLASS when posting job * Assign default WORKER_CLASS when scheduling ISO- Update to version 4.6.1550673294.3fb7464e: * worker: Log error returned by JSON API * Render error in all cases in create_artefact- Update to version 4.6.1550584043.5098c32d: * Log isotovideo startup more detailed- Update to version 4.6.1549966436.c3938033: * Revert support for ASSET_\d+_URL * openqa-clone-custom-git-refspec: make use of GROUP var * Improve error handling when changing priority- Update to version 4.6.1549799415.315b994a: * Fix modules filter wrong results while using comma * Show bug reporting links also on text results * Prevent download tasks for the same asset running in parallel * Improve Minion error handling when saving needle * Allow to run Minion jobs in UI tests * Migrate intermediate database changes * Don't use might_have relationship for job scenario * Show externally skipped module count in resultstats * Use same style for needle editor warnings as for regular flash messages * Save needles via Minion * Format Git errors more nicely when committing needle * Rebase needle directory before commiting changes * Use commit_git_return_error in Step.pm to propagate error * Skip result skipped on calculate overall result- Update to version 4.6.1549379724.2b90641c: * Split configured hosts by whitespace * stopping job: Proceed on errors during announcement * Let devel mode fullstack test also pass on state cancelled * stopping job: Change order of POST requests * Prevent error about cmd srv connection when test ends * Make code for engine startup more clear * Add architecture diagram- Update to version 4.6.1549026855.08485c7c: * Remove SQL files for 2017 * Update serial terminal function (#1982) * Remove image migration jobs that were only used for very old migrations * Lift the parallel job limit for the gru worker and add more fine grained limits to individual tasks- Update to version 4.6.1548936964.47070d70: * spec: Fix missing mention of 'openqa-clone-custom-git-refspec' in script/ * Add test check for scenario within error reporting * docs: Add documentation for triggering jobs based on any git refspec * Add script 'openqa-clone-custom-git-refspec' * Consider parent group comments for important builds * Cache result of function call * Add scenario description to infopanel of test * Fix typo in reference to DeveloperSessions * Fix another regression from c9735699 when no sync is needed * apparmor: Fix access to git templates * Switch to four spaces as requested, modify error ignoring * Fix flaky test regarding needle update * Improve error handling in worker cache /status route * openqa-bootstrap-container: do more error checking, fix a hang- Update to version 4.6.1548420629.e8e80a4b: * Fix regression of test caching failing introduced by c9735699 * worker: Fix two perl warnings- Update to version 4.6.1548078204.c9f60161: * Use nicer syntax for default vars * Add (carried over) bugref to job.done AMQP event- Update to version 4.6.1547830304.62f9aaaa: * Allow overwriting container bootstrap repo * Remove Failed modules filter from UI * Add UI tests for filter by module * Add search by module in all jobs of job group * Prevent github to think we have perl6 code * Better check for existing DBs in bootstrap * bootstrap: make errors fatal and deal with re-runs * apparmor: Further fixes for custom git clones * Fix external reporting if scenario description not present * Improve code for scenario description and add test * Add test suite description for bug reporting * apparmor: Fix custom git repo clone "env" denied * clone_job: Add convenience option '--within-instance' * Also set assigned jobs to parallel_failed (#1951) * Fix a few issues reported by jshint * Prevent the live log from becoming too long * Handle undefined `$text` in `find_bugref` and `find_bugrefs` * Wrap text in live log so long lines are readable * Allow custom CASEDIR/PRODUCTDIR/ASSETDIR- Update to version 4.6.1547114886.81dabdea: * 21-needles.t: Use `discard_changes` instead of re-calling `find` * Add bootstrap hint for Leap 15.0 * Fix "Can't locate object method new via package JSON" introduced by 95cb6601 * Check for correct perltidy version on execution * Fix if condition and leap repo prios for bootstrap * Improve a few details in worker code * worker: Improve handling API failures * Handle unexpected errors on status update more nicely * worker: Fix handling errors caused by connection issues with web UI * Show currently executed function in developer mode * Allow to pause on the next command- Update to version 4.6.1545406149.53968c1e: * Activate strict and warnings for all tests and do not use indirect object syntax * Add tool to bootstrap openQA with only one command * Fix comments and reference the usage messages of the minion job/worker commands in usage messages * Test setting last needle update * Add examples for run and list commands * Add Minion tests and make the run command a subclass of the worker command * Use better variable names in t/21-needles.t * Prevent wrong 'New needle ...' notifications in needle editor * Rename Docker-related targets and scripts * Improve documentation about running tests without Docker * Remove obsolete docker/testing * Improve documentation regarding Docker * Use --oneshot to make it more obvious what is happening * Improve job restart * Allow submitting margin and match level via return key * Hide tooltips when hiding developer mode elements * Remove 'Cancel job' button from developer mode * Reuse many more parts of Minion for Gru * Add a new OpenQA::WebAPI::Command namespace so there is no need for hidden classes in plugins- Update to version 4.6.1545230885.56b79eeb: * Use OPENQA_TEST_IPC mock in 37-limit_assets.t (#1935) * Reformat with new perltidy version * Adjust comment for pauseOnScreenMismatch * Allow test in devel mode fullstack test to pass * Remove 'Error from livehandler daemon' prefix * devel mode: Test version check * devel mode: Check whether os-autoinst is compatible * devel mode: Allow to pause on check_screen timeout * Improve and fix asset caching doc * Fix typos * Makefile: Prevent docker "build" and "run" to run in parallel * Add basic documentation for OpenQA::Events- Update to version 4.6.1545054233.21210ce3: * Use a fixed version of perltidy * Prevent 'Summary of HASH(...)' if multiple distris/versions specified * .travis.yml: Delete not necessary stage overrides * docs: Make commands to call more prominent with backticks * Makefile: Delete unused target docker-test-travis * Do not set the MOJO_LOG_LEVEL environment variable by default for more granular logging * Reformat everything for the latest version of perltidy * Support filtering by test in group overview again * worker: Validate job sent by web UI "job_grab" * Use localized signal handling instead of global sigtrap for modules * Set transaction isolation level for asset cleanup accordingly * asset cleanup: Check whether $res_max_job is set before comparing * Fix copyright year * Add license to new module * Move memory limit handling into a plugin * Move all global events to OpenQA::Events * Add OpenQA::Events module to replace random events being added to Mojo classes * Improve documentation for schedule control * Extend and improve asset documentation * Don't treat UEFI_PFLASH_VARS as asset if path is absolute- Update to version 4.6.1544609268.19a4cf68: * Fix test for popovers in 15-admin-workers.t for real * Improve "Refusing 'grab_job'" debug message * Test worker broken state * Add 'broken' state to the worker * Prevent worker to accept jobs if caching not available * Update specfile line for restarting apparmor- Update to version 4.6.1544510066.913d8f26: * Update license of test spec-file to current SPDX format (#1915) * Use the boring standard return value for all Perl modules * Merge hashes properly * Test handling of assets with invalid name * Prevent registering empty assets * Skip cleanup of assets with empty name- Update to version 4.6.1544166689.47296c23: * Disable INSTALL_FROM_CPAN by default (#1863) * Don't leave a limit_assets task hanging after 14-grutasks.t (#1882) * Do not require perlcritic on sle-12 (#1910) * When detecting asset keys, don't use the _URL form for ASSET (#1907) * Add Perl::Critic::Freenode to the test container (#1906) * Fix devel fullstack mode test * Make devel fullstack test more verbose * openQA.spec: Add missing runtime requirement for client (#1905) * doc: Mention select_serial_terminal() in serial terminal doc * Test rendering external table * Don't show categories in table for external results * Add filter for external results table * Use circle to display results in external table * Add separate table for external results from parser * Move logic for test detail steps from view into controller * Fedmsg: use Python 3 logger command * Extend documentation on the developer mode panel * Add WORKER_HOSTNAME to workers.ini template * Document re-needling workflow- Update to version 4.6.1543830229.359b5dd9: * Add Perl::Critic::Freenode to openQA.spec * Use Perl::Critic::Freenode to determine good coding style * Make all modules pass Perl::Critic::Freenode with severity level 4 (stern) * Activate strict and warnings consistently for all modules * Fix network dependency for cache service * Remove DEBUG and LOGDIR environment variables and change cache services to use the test mode * Test skipping timeout in developer fullstack test * devel fullstack test: Don't fail if renamed needles already there * devel mode: Allow to skip assert/check_screen timeout * Remove srand workaround that does nothing anymore since Mojolicious 5.76 (2015)- Update to version 4.6.1543400978.50e006bc: * Fix worker-cacheservice failing on startup due to no network * docs: Extend development tricks with dynamic test override * Fix typo in installation documentation * Replace Mojolicious::Commands with Mojo::Server::Daemon in test modules, make sure all test modules use strict, and fix a few issues caused by not using strict before * Restart openqa-worker-cacheservice on failure * Allow caching of externally downloaded assets- Update to version 4.6.1543249675.02bb8eff: * Exit worker with non-zero return code in error cases * Do not import from_json, there is already an inherited method with the same name * Add comments to point at Mojo::JSON being used to set up booleans * Debug 25-cache-service.t * Make perltidy happy * Convert a few cases back to Cpanel::JSON::XS that require special configurations (mostly for tests, but there might be underlying protocol requirements too) * Document steps to debug developer mode setup * Convert most uses of Cpanel::JSON::XS to Mojo::JSON, which will take care of using an optimized encoder and avoiding boolean warnings * Use fixed header for test result overview table * Check for JavaScript errors while waiting for result panel * Prevent selenium test to accidentally click on the VNC notice * Move note about VNC into developer panel * Update existing unique flash messages * Expand devel controls by default if paused and owning the session (#1880) * Add rsync BuildRequires and Recommends to RPM spec (#1881) * Add a new is_admin_js helper to generate JavaScript booleans for use in templates * Add a test for browsing the admin pages in readonly mode * Use OPENQA_TEST_IPC in developer mode unit test (#1868) * Add test to check link for entire build * Add link to test results for multiple job grops * Call _reschedule after schedule concluded * Remove unused variable $force in _reschedule() * Fix comment in scheduler code * Fix various uses of the is_admin helper in templates to generate JavaScript that resulted in empty lists, because the helper returns a Perl boolean value instead of a JavaScript boolean * Revert "Fix deprecation warnings regarding Mojo::Transaction::error" * Fix line break in failed module box * Fix formatting * Fix deprecation warnings regarding Mojo::Transaction::error * Combine multiple distri/version/flavor/build filter with logical or * Fix filter for architecture * Upload video timestamp file when it exists (#1873) * Fix formatting * Use Mojo::File::slurp in check_tabmode * Improve error handling of Step controller * Handle `app` and `tx` attributes of Controller being weakened * Do not check group name by dragging group * Minor fixes for WritingTests doc (#1865) * Add 2 new dependencies to the travis container: (#1864) * Update all uses of Mojo::Transaction::success to their Mojolicious 8.06 equivalent * Fix a few new uses of tempdir * Fix various incorrect uses of Mojo::File::tempdir * docs: Extend definition of *softfailed* to "known issues" (#1837) * Refuse updating job group name with empty or blank (#1844) * Apparmor: Add /dev/hugepages (#1857) * Fix broken in section of inter machine dependencies (#1859) * Wrap up and polish * Do not use wantarray in GRU's enqueue() * Update POD OpenQA::Worker::Cache::Client's SYNOPSIS * Avoid to race to get available minion workers * Drop PID from log * Move Minion workers under a single service * Cleanup * Fix typo * Adapt gru tests * Generate same lock for asset/host in the request object * Fix rsync output in minion task * Refactor and update Documentation * Use the cache service to perform rsync tests caching * Create Minion task for rsync execution * Use the host folder to cache tests/needles * Do not check if child is running if it's not there * Reduce the lock expiration time * Trim spaces from left and right in assets name * Hold the db handle during transactions * Add test for Minion task registration and execution * specfile: DBD-SQLite needs to be > 1.51, required by Minion::Backend::SQLite * Add tests and cover also subprocess execution * Add function to generate session token * Read and set limit from config file, defaults to 50GB * Makefile: install Worker Cache Service systemd unit * Add POD for Cache Service and extend docs/Installing.asciidoc * Add service file and adapt openQA.spec * Avoid useless quotes on hash key * Debug - adapt compile-check-all * Address to PR comments - also add test for checking output in cache-service.t * Drop unused function * Write cache output into os-autoinst log * Make possible to retrieve cache output * Add debug messages while enqueuing download * Asset path needs to be a string for vars * Make dequeue and status post * Adapt fullstack to cache path change * Extract domain parsing to _base_url and use it also in the client to resolve asset path * Adapt tests * Get the cache path right * Incomplete job if cache service is down * tests: Wait also for worker minion in fullstack * Use defaults in isotovideo engine * Update defaults and remove protoyped function from Cache::Client * tests: Add test for available_workers() * Add available_workers() to Cache::Client * Fullstack: move sqlite cache check up * Cache: make retry() return always the response object * Fullstack: Wait cache to be ready * Adapt tests and utils * Drop unneeded default * Use OpenQA::Worker::Client inside the cache task * Start to adapt fullstack test * Adapt to PBP * Add dep on Minion::Backend::SQLite * Move common testing functions to Test::Utils as they will be reused also in fullstack test * Add Mojo::SQLite dependency * Use the Cache service within the worker * Add accessors to retrieve asset path and check if exists * Remove unneded log line and cleanup check_limits() * Finishing porting the Cache.pm code to Mojo::SQLite * Rework cleanup strategy, avoid endless loops - update etag fails now * Use Minion Admin plugin with the cache service * Drop downloading, Cache.pm now records just etag and size * Use Devel::Cover in cache-service tests to enhance coverage * Adapt cache tests - still fails on size calculation * Move Cache.pm code to Mojo::SQLite * Add dequeue() and tests for it * Fix and test enqueued tasks * Do not use list_jobs from Minion to gather statuses, causes races * Add default usage tests and use minion lock to detect if it's in use * Fix test copyright header * Add standard client usage * Add Cache service client * Do not lock anymore on assets * Add test for cache service * Add script to start cache service * Create separate class for Minion Server and worker * Do not log an error when trying to unlink an nonexisting file (#1854) * Prevent filter on test overview to reveal old jobs * Allow to create dependency for jobs on different machines * Test that filtering overview does not reveal old jobs * Add dependency for test in os-autoinst (#1851) * Handle skipped test result in IPA parser * Show bug title on mouseover * Fix job templates JavaScript * Fix typo in networking documentation * Regenerate docs * devel mode: Suppress connection errors if no module running * Make 13-admin.t more verbose in case of failure * Use $LEAP_VERSION in documentation consistently * Use 'not yet' instead of 'never started' on /admin/workers/X (#1841) * Extend unit tests for developer mode UI * Don't replace preview container when updating results * Load new test details when paused in the middle of module * Add START_AFTER_TEST/PARALLEL_WITH to dep graph tooltip (#1840) * Allow to scroll up and down using arrow keys on test details (#1842) * Fix testhelper wait_for_session_info * Lazy-initialize devel mode when switching to live view tab * Make 'can't remove ...' warnings debug messages (#1836) * Create new db schema version * Add tests for test module flags * Add special icon for the always rollback flag * Add always_rollback flag description * Add regex filter for admin tables (#1831) * Simplify Schema::Result::Jobs::running_modinfo * Test progress bars on /tests * Fix progress bars on /tests * Fix prio field in /tests and add a test for it (#1834) * Hide cloned jobs from job dependency graph (#1833) * Add route to poll stats of running and scheduled jobs (#1829) * Allow softfail and softfailed as step result * Prevent rendering undef/refs as resborder * Move errors regarding developer mode into the devel panel (#1830) * Test error handling of status/image/progress upload * Recompute asset status after cleanup for /admin/assets * Fix misleading error message on non-UEFI jobs (#1825) * Save asset status cache under /var/lib/openqa/webui/cache * Don't serve assets table while cleanup is ongoing * Update apparmor profile for current Tumbleweed for x86 workers (#1827) * worker: Stop job if considered dead by the web UI (2) * worker: Stop job if considered dead by the web UI (#1824) * Prevent multiple limit_assets tasks to run in parallel * Spawn limit_assets task in a consistent way * Polish a few details on the /admin/assets table * Allow to trigger asset cleanup task on /admin/assets * Prevent warning when rendering assigned jobs on 'All tests' page (#1823) * Fix issues noted by jshint * Make displaying assets by group faster * Set asset table width to 100% * Show last update of assets table * Improve speed of /admin/assets * Fix dependencies of openQA-client package (#1819) * Use less-ugly gravatar icons already used in OBS and progress (#1822) * Fix padding of tabs in testresults * Polish code for dependency graph * Clean CSS * Ensure filter icon and last tab button don't overlap * Add help text to dependency graph * Rename part_of_cluster to has_dependencies * Remove old dependency table * Test dependency graph * Improve appearance of dependency graph * Compute cluster for dependency graph * Fix clipping and alignment of dependency graph * Make dependency graph a bit more fancy * Display dependency graph using dagre-d3 * Handle logging errors (#1815) * Use italic font to display default prio (#1818) * Fix openQA-client package for openSUSE (#1816) * Stop worker when an unhandled exception occurs (#1809) * Limit new needles sent to os-autoinst on resume to 100 * Use Mojo::File in t/ui/07-file.t * Add 'perl(File::Touch)' to Dockerfile * Test needle download * Allow command server to download new needles on resume- Update to version 4.6.1538413557.f9e2a131: * Adapt tests to logging behavior of Mojolicious 8 (#1814) * Use transaction when computing the asset status * Make only cleanup fail on inconsistent asset status * Print max job when detecting ongoing scheduling during cleanup * Fix removal of scheduling assets * Document asset cleanup- Update to version 4.6.1538057874.2d8d0618: * Update AppArmor profile for Leap 15.0 (#1810) * Allow overwriting job priority when posting isos (#1807) * Dump the JSON templates as ascii * Fix jobs fixtures * Increase debugging information in asset removal * Round the remaining days to make tests less blinky * Fix wrongly assigned states in existing data * Prevent setting the state to SKIPPED * Test whether t_finished is assigned when setting a final job state- Update to version 4.6.1537939546.7aa7ed58: * all tests page: Fix parameter passing for timestamp rendering (#1806) * Make asset cleanup more verbose (#1803) * Fix 'last_match' param of AJAX route for needle table (#1802) * Use AJAX for all tables on /tests * Don't pre-compute IDs for finished jobs when loading HTML * Optimize all tests page * doc: remove mention of openQA-devel package (#1800) * Make sure multimachine jobs get a worker eventually * Some code restructing in the scheduler function * Delete empty settings in clone job * Display progress bar when downloading asset * Cache infos about scheduled jobs * Limit logs and results for groupless jobs (#1798) * Release job networks more often (#1795) * Fix removal of untracked assets (#1796) * Enable the scheduler on updates (and the webui is enabled) (#1785) * docs: Write Leap installation repo in more timeless way (#1791) * Run inserting screenshots in a transaction (#1792) * Update AppArmor profile to allow worker to use cgroups * Set specific slice for worker service * Better detect of systemd slice * Inform worker about devel session to reduce posting status info (#1789) * Correct typo (#1790) * Require RabbitMQ::Client 0.2 * Make AMQP sending less fragile * Make web socket and livehandler daemons listen on IPv4 and IPv6 (#1787) * Prevent worker to endlessly retry non-critical API calls (#1788) * Fix typo in t/api/02-iso.t * Make asset download feature usable by both "jobs post" and "isos post" * docs: Cover different asset types and asset options- Update to version 4.6.1536756702.f75303c1: * Improve error log of AMQP plugin (#1784) * Treat failure when posting upload progress as non-critical * Allow regular HTTP and WS being passed though reverse proxy * Fix random failures in developer mode unit tests * Add unit test for posting progress upload * Add HMAC time stamp also on livehandler daemon * Store upload progress in database * Prevent use of uninitialized value when posting upload progress * Check for upload progress in developer fullstack test * Use API authentification for post upload progress route * Test handling of upload progress in UI * Show needle editor button not unless upload complete * Pass upload progress from worker via liveviewhandler to browser * Open needle editor in developer fullstack test * Fix one more corner case for blocked_by (#1781) * Simplify reschedule code * Make the overview page responsive again (#1780) * Sort scheduled jobs via database (#1779) * Fedmsg plugin: emit 'standardized' fedmsg (#1758) * Fix blocked jobs not appearing in scheduled table * Increase max execution time per job in fullstack test * fullstack.t: Distinguish between not found and wrong permissions * Add more checks in 15-comments.t to debug random failure * OpenQA::Parser::Format::JUnit include error and skipped details (#1778) * Update serial failures detection documentation * Prevent asset-releated tests being disturbed by unrelated files * Test computing asset status * Optimize querying asset status for admin table * Allow rendering asset table as JSON- Update to version 4.6.1536432963.ac9f540e: * Fix the vlan assignment and release * Remove debug that prints to STDERR * Clean up 05-scheduler-dependencies * Take the full cluster into account, not just the first level * Avoid undefined warnings from rescheduling * Do not reschedule cluster jobs multiple times * Do not require websocket in scheduler (#1777) * Extend the test coverage for blocked_by * Fixed blocked_by calculation not to create loops * Schedule the jobs manually in fullstack test * git clone only the HEAD of os-autoinst * Do only copy back the cache on travis * Make 2 debug messages in WS server info * Wait for the scheduler to reshedule job 3 * Die early in full-stack test * Don't output 'Scheduling new jobs' if there are 0 free workers * Add some means to debug full-stack test * Only talk about cpanm if it's actually true * Run chromium with --no-sandbox not to require admin caps * Revert PR 1747 * Allow to enable monitoring using mojo-status (#1763) * Catch misconfigured test suites creating cycles (#1775) * Make tidy fast by only looking at changed files (#1773) * Ignore file docker.env created by make target docker.env * Update docker-related documentation * fullstack/Docker test: Skip os-autoinst build only conditionally * fullstck test: Improve ignoring JS errors * fullstack test: Prevent auto page reload when waiting for result panel (#1770) * Improve help popover for job group/template prio * Prevent Firefox to misalign arrows of prio input * Disable job template prio editor for non-admins * Test using default prio from job group when scheduling ISO * Add tests for setting prio via job templates API * Improve error msg and response for update of job template API * Allow job template to inherit prio from group * Allow amending job template priority * Use default prio when adding new job template to existing medium * Avoid using Mojo::ByteStream directly when rendering JSON * Adapt t/16-utils-runcmd.t for e2771ee * Fix sorting worker jobs by finished * Make 33-developer-mode.t more stable * Prevent use of uninitialized $current_running in Worker/Jobs.pm * Test opening needle editor for running tests * Improve 404 error pages of needle editor for running jobs * Test pausing on assert screen timeout * Consider only new console messages in fullstack test * Adjust upload_status for pausing on assert_screen timeout * Fix typo occured -> occurred * Test UI changes for pausing on assert_screen timeout * devel mode: Hide executed modules when test status updated * devel mode: Show reason for pause * needle editor: Show 'back to live view' if in devel mode * devel mode: Allow to open needle editor when paused * devel mode: Add UI elements for pausing at timeout * Use git -C for commits * Don't check for .git directory when making git commits- Update to version 4.6.1534873283.be929573: * Remove entrypoint from specfile sources * Makefile: Build env file for docker with needed environmental variables * Fix Mojolicious version requirement * Emit parent group ID in AMQP comment event * Use subtests in AMQP test * Makefile: Avoid also to parse env with spaces to travis * tests: Fix builds on master * Adapt fullstack tests to changes in os-autoinst * Make javascript_console method less verbose when there are no errors * test: disable broken test * Do not call unblock introduced in 184d0c5d5 * Revert "Calculate blocked by jobs on creation in job resultset" * Do not display blocked count * Do not calculate blocked jobs * Drop unused import * Revert "Merge pull request #1729 from mudler/blocked_by" * Revert "Fix usage of $blocked in test results template (#1740)" * Revert "Merge pull request #1741 from coolo/fix_blocked_by" * Makefile: cleanup * tests: INSTALL_FROM_CPAN by default * docker: Pass environment to docker * docker: try to build our image with package upgrades and custom entrypoint while running tests * docker: Upgrade container packages before running tests * Fix suggested command for adding devel repo- Update to version 4.6.1533914931.14b73490: * Use the transaction to check if it's empty (and avoid warnings) * Upload: Keep the transaction around * Calculate blocked_by status of restarted jobs * Remove systemd dependencies on scheduler * Fix usage of $blocked in test results template (#1740) * Make limit for keeping untracked assets configurable * Test inheritance and overriding of job/parent group properties * Read default job/parent group properties for cleanup from settings * Update openQA documentation regarding serial failures detection * Make UEFI_PFLASH_VARS non critical on local workers * Print autoinst-log.txt after Travis testrun * Fix full-stack.t * Adapt test of group overview JSON route for parent comments * Test tagging on parent group level * Test commenting on parent group level * Allow pinned comments on parent group overview * Support commenting on parent-group level * Test overrides for job settings passed to clone job script * Reduce indentation in clone_job_apply_settings * Require at least IO Socket SSL 2.009 * Pass worker setting WORKER_HOSTNAME to web UI * Add tests for comments carryover if module contains bugref in details * developer mode: Don't show same error twice * Unify disable_bootstrap_animations and disable_bootstrap_fade_animation * Carry comment over if test suite failed with same serial failure * developer mode: Show flash messages on errors * Test processing state changes from os-autoinst * Consider fullpath as a valid asset * Minor refactor for clone_job.pl and add unit test * Add global settings support for clone job * Treat UEFI_PFLASH_VARS as non critical asset * Change striped name from IPA results * Remove debug leftover * Highlight blocked jobs with orange colour * Do not hide scheduled jobs if blocked * Calculate blocked by jobs on creation in job resultset * Release vlan networks only if other jobs in the same cluster aren't running anymore * Disable worker shuffling in 05-scheduler-* tests * Add scheduler function to disable worker shuffling during computation * Adapt job_grab tests * Adapt scheduler fullstack test to latest changes * Follow the rename of get_websocket_api_version * blocked_by calculation: Don't block on self * Fix timer reset on quit * Calculate blocked_by state later in the process * Reset the scheduler tick if not summoned * Simply scheduler logic - but a lot * Fix blocked_by for chained parallel jobs * Disable pp in IPC - a little too noisy on allocating * Filtering for scheduler * Prepare a hash of jobs * Select all scheduled jobs and filter them for free workers * Remove BUSY_BACKOFF and CONGESTION_CONTROL * Remove CAPTURE_LOOP_AVOIDANCE option * Remove OPENQA_SCHEDULER_FIND_JOB_ATTEMPTS option * Add UEFI_PFLASH_VARS to detect_asset_keys * Mark all restarted (cluster) jobs in UI * Add IPA format to OpenQA Parser * Improve logging in LiveViewHandler * Assign os-autoinst tx not before actually connected * Ignore 'Data frame received after close' for now * Extend unit tests for live view handler * Refactor LiveViewHandler * devel mode: Prevent endless, instant reconnects on error * Mention how to actually enable openqa-ssl.conf under openSUSE * Use wss protocol for websocket connection when page loaded via https * Fix javascript errors on running.js (#1719) * Update README.md- Update to version 4.6.1531161673.f7fc21dd: * Remove docker-tests during install * Don't display blocked jobs as scheduled * Make registering assets transactional (#1711) * docs: Add note on sending new lines to a serial terminal (#1714) * clone_job: Make _GROUP and _GROUP_ID override each other (#1716) * Add blocked_by to jobs - calculated on job changes * WIP: Move commands to run docker tests to separate script * Make parser test less verbose * Make error messages in setup_share_dir more specific * Allow to use a custom os-autoinst checkout * Remove print() leftover from debugging * ws proxy: Add tx after last client-specific error handled * Don't fail full-stack.t when already assigned * Prevent use of global variables in LiveViewHandler.pm * Make developer mode accessible to operators (#1707) * needle editor: Assign new background image instantly * developer mode: Show only modules which are still ahead * Adjust overflow behavior of dashboard progress bars * Use _GROUP_ID in clone_job.pl * Refactor test code for jobs post * Test specifying group by ID on jobs post * live view: Connect to ws server when testStatus.running is set * Fix bugs in form controls for devel mode * Show developer mode form only when connected via web sockets * Fix help popover in developer panel * devel mode: Handle case when module list still unknown * Never assume it is the own devel session when not logged in * Don't update developer mode controls until confirmed * Rephrase to avoid 'developer session' * Make full-stack test more stable (#1701) * Replace 'opened by' with 'owned by' * Prevent resetting the module to pause at on page load * Show link to ws console only in development mode * Remove useless debug printing in live view handler * Don't use Test::MockModule::redefine() * Improve error handling of livehandler daemon * Test UI controls also in developer fullstack test * Cancel job when quitting the developer session * Don't quit developer session when disconnecting from os-autoinst * Add tests for developer UI controls * Fix importing determine_web_ui_web_socket_url * Start developer session via submit button * Set status code when finishing ws connections * Avoid using Mojo::IOLoop->one_tick() in developer unit tests * Adapt to removal of waiting state * Fix style issues mentioned by @foursixnine in review * Extend unit tests for status-only route * Fix broken HTML on test details page * Check that VNC instructions are shown when test is paused * Document variables for developer mode * Hide entire developer panel when test not running * Adapt existing developer test to UI changes * Update module select for devel mode like modules under details * Handle reconnects in the client * Notify clients about removed sessions as well * Keep track of status-only and devel ws tx separately * Show VNC instruction only for running jobs * Pick the right route (either developer session or status only) * Add UI controls for developer session * Move methods to build proxy url to OpenQA::Utils * Remove deprecated ui test * Allow developer-instructions to be modified by status updates * Add status route to websocket proxy * Fix typos * Connect via livehandler proxy to isotovideo to get updates * Update service file for livehandler service * Remove unnecesary options for livehandler service * Update instructions * Expose VNC port to developer * Add UI controls for developer session * Fix formatting of Contributing.asciidoc * Document running UI tests with Docker in non-headless mode- Update to version 4.6.1530017682.0f384112: * Allow 'assigned' state in fullstack.t (#1699) * Move constants from Schema::Result::Jobs to a separate package (#1696) * Remove leftovers of interacitve mode (#1697) * Adapt fullstack test for the logging changes * Adapt tests for the display of pid in the log in debug mode * Print pids of processes in logs if log level is debug * Avoid db locks on asset_lookup * Treat the case when we could not update asset in critical section * More protection for critical section in the cache * Add other cache tests and more refactoring * Try to bring coverage back * Add locking test, and remove useless query in fullstack.t * Reduce the critical section * Avoid Perl 5.18 complain * No need to import getcwd * Do not run the cache test in parallel * Reduce parallel processes for concurrency test to avoid travis to crash * Wrap also toggle_asset_lock in lock_section * Flip download = 0 from the same function used to toggle on/off * Make the cache test more stable - add also option for stress test * Add concurrent test for cache * No need to init explictly anymore * No need to export get_asset anymore * Adapt cache and cache test to more OOP style * Use transactions and wrap rollbacks in eval calls for further debug. Also enable exclusive transaction in toggle_asset_lock * Fix wrapping of parser results (#1695)- Update to version 4.6.1529433451.a70c6e82: * Remove running_or_waiting method * Remove waiting state that was leftover from 5e65496f * Ensure proxy is connected to os-autoinst in devel test * Allow status as a ws_proxy command * Make waiting for paused more robust against disconnects * Remove unused parameter in wait_for_developer_console_contains_log_message * Let the web socket console automatically reconnect * Ensure ws connection won't timeout in fullstack tests * Improve check for developer console in fullstack test * Remove link to developer console * Use docker image from OBS (#1685) * Let tmpfiles.d create the mount point "share" (#1689) * Add basic barrier documentation * Improve documentation about mutexes * Remove $isodir from Utils (only used in tests) * Remove /tests/X/iso route * Remove hdddir and otherdir from Utils * Fix waiting for development session * Don't fake D-Bus when running the devel fullstack test * Propagate os-autoinst URL from worker to web UI * Fix CSS for developer console * Fix path for liveviewhandler in Apache config * Adapt execution of developer test to latest changes * Fix perl critic error * Open the 2nd window/tab in devel mode test correctly * Handle errors happening before dev session correctly * Add unit test for developer mode * Remove unneccassary D-bus env for livehandler * Refactor live view handler to use regular methods * developer console: Handle case when port is NaN * Refactor full-stack.t and 33-developer_mode.t * Add test for developer mode to Travis test matrix * Add test for developer mode * Workaround broken syntax highlighting of full-stack.t in Kate * Allow to start Selenium driver directly via start_driver * Improve passing parameter to OpenQA::Test::Database::create() * Fix ID of developer session info * Increase inactivity timeout for openqa-livehandler * ws client: Broadcast messages to all JavaScript client * ws proxy: Try/catch only JSON decoding * Allow login as a 2nd administrator via fake auth * Make logout accessible via regular GET * Install service file for openqa-livehandler * Use transaction to delete development session * Move ws connection for developer session to its own service * Keep track of developer session, limit to one session per job * Validate commands before passing to os-autoinst * Make the websocket proxy route basically work * Allow to use websocket console for proxy route as well * Add basic structure for developer mode web socket route * Make fullstack test more verbose * Prevent warning in fullstack test * Test pausing and resuming jobs * Add web socket console for isotovideo commands * Display incomplete jobs in next&previous tab (#1682) * Update documentation with NAT configuration using firewalld (#1683) * Categorize UEFI PFLASH drives as HDD assets (#1684) * Try caching * Easier way to pass exit status from docker-tests * Change message level when cgroups cannot be created (#1681) * Fix typo in the travis.yml and fix the grep regular expression for the status checking (#1679) * Adjust popover margin on audit log (#1678) * Change from su to sudo in the docker image * Docker shell scripts cleanup * Allow where parameter for mutex unlocking (#1677) * Documentation for running tests in docker * Enable codecoverage * Add support for os-autoinst * Add DBUS support. * Force user permissions 1000 to be compatible with opensuse * Moved the DB from the host to the container * First release of the dockerfile to create container to run unit and integration tests * Remove job_set_running - as jobs are no longer waiting * Remove job_set_waiting - jobs aren't WAITING anymore * Remove current interactive mode- Add Dockerfile and entrypoint.sh for development container - Remove _multibuild to pass source validator- Add files for livehandler daemon- Update to version 4.5.1528009330.e68ebe2b: * Remove uncovered as unused asset_list call (#1675)- Update to version 4.5.1527697506.2eedfb2e: * Add a little coverage to the admin/needle controler * Use the timestamp on admin/needles * Add migration to update the timestamp of the needle matches * Cascade set null to job_module IDs in needles * Add logggingPrefs to chromium to make sure we get browser logs (#1672) * Remove more references to first_seen * Remove job_module_needles table and first_seen_module_id * Remove scan_old_jobs job - no longer referenced * Drop Jobs::retry_avbl from DB * Scheduler: enable WAKEUP_ON_REQUEST by default and reduce default tick time (#1669) * Tidy previous commit * Reduce debug output for parser tests (#1668) * runcmd tests: handle differently-cased git error message (#1665) * Ignore cloned children during cluster calculation * Cancel the full cluster if a job fails * Rename jobs_to_duplicate to cluster_jobs * Add test case for cluster cancel (failing atm) * docs: WritingTests: Fix superfluous 'you' * docs: WritingTests: Add backend related test development tricks * docs: WritingTests: Split big section "Test development tricks" * Fix broken navigability with arrow keys in test details (#1664) * Fix test cases and make tests more reliable * Do not reuse scheduled jobs on cluster duplicate * Some sync between code and tests * Make Job::duplicate non-recursive * Always enable sql debugging if requested * Start the display with the current job * Small cleanup of variables * Extract create_clone from Jobs::duplicate * Remove support for retry_avbl * Remove limit option in next&previous tab UI- Update to version 4.5.1527149502.003be4d6: * Add error logging in gru (#1660) * Fix the alignment of the progress bars on group overview (#1659) * Add http-only config for nginx (#1526) * Disable needle selection if there's nothing to select * Reduce padding of lists in tool tips * Fix devider in job group navigation with Bootstrap 4 * Allow specifying group for isos post by name * Fix DataTable error under route /tests/latest (#1656) * Exclude external links in 22-dashboard.t (#1655) * Add _GROUP filter to isos post * Update documentation for multimachine tests setup- Update to version 4.5.1526551139.04373a1e: * Fix triples in job templates documentation * Update documentation about isos post in client help * Enable client to restart jobs 'from test result overview' * Add API route similar to test result overview * Refactor composing search args for test overview * Update documentation about isos post in client help * Show job results in results tab (#1614) * Show all badges and build numbers (#1650) * Limit special rendering for text results to parser results * Test rendering text results * Make the layout use 100% width (aka 'fluid') (#1646) * Ignore profiling data generated by nytprof * Improve rendering text results in test details- Update to version 4.5.1526033850.1ad9148d: * Add _source field to every detail generated by parsers implementations (#1647) * Fix links to #live not starting live view (#1648)- Update to version 4.5.1525548058.3f6bb61a: * Avoid appending multiple runs with --nocleanup (#1644) * Limit number of tasks for limit_assets and limit_results_and_logs GRU tasks * Add test for GRU enqueue limit option * Update apparmor profile for worker (#1645) * GRU: Add support to limit enqueuing by task * Update unit tests for TAP parser * Mark test suite as failed if test steps have failed * Add information about openQA internal results * Update TAP format documentation * Remove dots from filename * Ensure that the details description is set * Use a single result to contain all the test steps * Update changes to TAP format * Temporary version of the parser for TAP still failing * Log a warning when step data is not found * Allow LTP parser to load files that contain special characters * Replace extra dots in the filenames (#1642) * Increase the required coverage to 88.8 * Do not fail a pull request if there are unexpected changes * Use same width for each colored dep status span * Show parent and child deps on job page in nice tbl * Enhance unit tests for GRU TTL * Set 2 days of ttl for limit_assets and limit_results_and_logs when posting isos * Add unit test for GRU task TTL * GRU: Add TTL for Minion jobs * Use a smaller font for the 'ago time' to fix rendering (#1635) * Prefetch comment counts for /tests * Update bootstrap to 4.1.1 and fontawesome to 5.0.10 * Do not load full application to generate assetpack data (#1628) * Improve the duplication tests (#1627) * Hide categories when filtering test details * Ensure needles directory exists in 18-tests-details.t * Require 'Selenium::Remote::WDKeys' in CPAN file * Add test for filtering test details * Allow filtering test details- Update to version 4.5.1524586233.92db89bc: * Add unzip-plain to AppArmor profile (#1629) * Use current SUSE Logo (#1626) * Avoid skipping dependencies when cloning jobs. (#1623) * Improve some details in t/ui/18-tests-details.t * Randomize GET /tests/99946#step/yast2_lan/1 * Use usual prove flags on Travis as well * Hide failed modules on overview table for small screens * Fix positioning tooltips with Bootstrap 4 on overview page * Add Minion Link to navbar and move under admin * GRU: delete gru and deps on failure * Fix spacing of 'Build + Bars' rows on dashboard * Adjust padding and media break points for dashboard * Use exact same colors for cards/panels as before * Add unit test for job custom_module * Display GRU failure as job test module in openQA * Fix dropdown menus in fullscreen mode * Use full width in full screen mode * Make the gru service to be restarted on-failure * OpenQA::Task::* Die on fatal errors * Catch all tasks output also in case of error * Mark the jobs associated to the gru task incomplete in case of gru task failure * Adapt to new Minion::Job API introduced in Minion 9.0 * Remove unused Data::Dumper import * Use Minion::Command::minion::job to get jobs list * Enable the Minion Admin interface under /minion * GRU/Minion: Take account of failures * Use gru enqueue in controllers and keep relation with minion jobs * Adapt test and fix leak of memory * Gru: get dsn from DBI for Minion * Move GRU tasks to Minion- Require Minion >= 9.02- Update to version 4.5.1524056562.74e334c1: * Close candidate menu after selection * Fix positioning of dropdown icon under Firefox * Fix handling multi-tag tests * Adjust UI tests to handle new candidates selection * Implement full diff * Allow to show just the screenshot again * Add shortcuts to custom combo box * Make style for result preview part of openqa.scss * Use customized bootstrap dropdown instead of combo box * Workaround issue when clicking menu item in 21-admin-needles.t * Port card in overview correctly to Bootstrap 4 * Use same link color as before * Make badges look like before * Adjust colors * Fix paging of tables for running and scheduled jobs * Remove symlinks for Glyphicon fonts * Fix UI and fullstack test after Bootstrap 4 migration * Adjust media breakpoints * Fix grammar in tour * Upgrade tour to Bootstrap 4 * Restructure stylesheets * Fix live-view and other small issues under Bootstrap 4 * Make it look more like before under Bootstrap 4 * Fix permanentely moved links on dashboard * Fix overall appearance with Boostrap 4 * Fix filter panel on the main page * Patch bootstrap theme to be a little more like it was before * Remove hidden class * Port the navbar to bootstrap 4 * Start to migrate to bootstrap 4- Update to version 4.5.1523608608.fca0aa46: * Enforce sorting the results returned by the sql query to use in is_deeply (#1621) * Remove dead code in Worker/Jobs.pm * Update current test module details when cancelling running job * Prevent failures in worker reset_state() (#1618) * Group candidate needles by tag (#1606) * Test image selection of needle editor (#1617) * Fix 'Take image from' selection in needle editor (#1616) * Refactor needle editor code * Fix showing needle editor when no tags present * isotovideo: wrap log_ calls with eval * Require latest RWP * Start isotovideo inside a container using cgroups * Checks if failure status file exists before trying to slurp it * tests: cover case when one of the cluster jobs already running * Consider running jobs in filter_jobs * Fix fullstack test in case /usr/bin/isotovideo is present * Limit showing new needles to the 5 most recent ones * Use 'new' prefix when showing new needles * Add documentation about showing new needles in editor * Improve tests for needle editor * Show errors/warnings/info in needle editor with consistent margin * Show added/updated needles in editor * Add database entry for needles when saving via editor * Simplify save_needle_ajax code * Extend needle table with tags and timestamps * Capture serial patterns documentation * Don't show configure button for untracked assets * Fix mojo not handling max_size_limit when is a transaction * Allow optional overwrite of the productlog request depth with a query parameter (#1601) * Enable JSON representation of the test overview (#1600) * Add asset size limit option * Return reference for test result file lists * Make OpenQA::Client::Archive property of OpenQA::Client * Remove chdir that caused errors when downloading test files * Add file _download_file_at method for logs and uploaded logs * Move progress monitor code to a separate fuction * Ensure that uploaded test logs can be downloaded * Add first version of OpenQA::Client::Archive * Move test_uploadlog_list and test_resultfile_list to the model- Use Minion for GRU tasks, this requires Minion and Mojo::Pg as dependency- Fix handling UTF-8 when executing make install- Fix handling UTF-8 in update-cache.sh- Update to version 4.5.1520515419.c3df6f91: * Update the chromedriver url from 2.33 to 2.36 * Allow saving needles for OS with dots in the version * docs: Clarify some serial terminal terminology and other elaboration (#1596) * Do not reset the api version just because the worker is offline * Fix scheduler comment - now default MAX_JOB_ALLOCATION is 80 (#1595) * Always retry until chunk is uploaded and retrials exhausted (#1594) * Refactor and add error test * PARALLEL_CLUSTER is no more * Adapt scheduler_full test * Avoid to re-consider the jobs that are being allocating in a round * Do not take account of spaces in PARALLEL_WITH * Exclude allocating jobs from prefer_parallel cut * Consider allocating only when we have them * Bump MAX_JOB_ALLOCATION default to 80 * Exclude allocated when blocking dependencies * Consider the jobs allocated during the round as running in prefer_parallel * Prevent cluster tests to be allocated if their group is not allocated- Update to version 4.5.1520100590.2279151e: * Fix sort order of the review comments (#1593) * Expand the serial terminal console documentation (#1586) * Emit openqa_job_create events when an ISO is posted (#1584) * Replace die for 500 code and move global constants to OpenQA::Constants * Avoid circular dependencies when running the tests. * All the available free workers need to have the same websocket interface version * Move the interface verification to the worker ack- Update to version 4.5.1519929327.f726adcc: * Enable wrapping cells in overview table (#1591) * Perltidy * Protect during collected unsubscription * Prevent to determine job status from collected event when timout expires * Remove check backend timer * Fix check_backend detection * cpanfile: require at least Mojo::IOLoop::ReadWriteProcess 0.19 * Adapt jobs tests - we are not dying anymore * Don't fear the (sub)reaper * Add AMQP doc * Lock tidy version * Make prove verbose- Update to version 4.5.1519128406.810fb68b: * Show correct port for created job (#1578) * Use rwp also to call rsync (#1585) * Force a restart when the children or grand-children processes die * OpenQA::Parser::Format::JUnit mark testsuite failed if one of testcases fails * Replace the exec call with ReadWriteProcess module * Add use Mojo::DOM in JUnit and XUnit Parser (#1580) * Use the generated Mojo::URL as Client base_url * Add get_piece() in OpenQA::File to ease writing of downloader class * Add test for OpenQA::Files's prepare() * Make integration tests of uploader with fixed chunk size * Fire events inside subprocess before and after chunk processing. * Move uri checks inside common function in OpenQA::Client::Handler and guard from not configured scheme in host * Add test to check if retrials numbers are matching * Use subprocess for potential loop blocks * Adapt workers to error handling * Add tests for OpenQA::Client::Upload retrials on failures, and events propagation * Emit errors on OpenQA::Client::Upload * Swap multi-chunk uploader in worker with OpenQA::Client * Make OpenQA::Handlers EventEmitter(s) * Split OpenQA::Client * Wipe out content of written chunk, try only weak check and back to Storable * Do not always perform total cksum * Drop Mojo force to File asset, display stats of uploaded chunks * Write as we receive in a temp file * Avoid to relay too much on the serializer * Use C backend to read whole file when computing total cksum * Enhance error detection * Allow to chunks to dynamically grow and shrink * Make total checksum verification run faster * Let specify chunk size in config file, and default to 1000000 bytes * Also add API endpoint to inform of upload status, adapt tests * Do not make split() to load the file * Pass asset option in multichunk upload * Create empty file before writing it if doesn't exist * Try to swap current uploader with multi-chunked one for assets * Add spurt to OpenQA::Files * Add write_verify_chunks() and write_chunks to OpenQA::Files * Add methods to verify against chunks, also add test when joining/verifying in-place * Add serialize/deserialize also to single result of parser * Add OpenQA::File, wraps Mojo::File and adds seek capabilities * Add worker version check on the server. (#1552) * Add basic test for OpenQA::WebAPI::Description * Add POD documentation to Controller/API/V1 packages * Test 27-errorpages.t with a predefined API desc * Replace Pod::Tree for Pod::POM in WebAPI::Description * Add POD documentation to Controller/API/V1 packages * Move API description methods to its own package * Add POD documentation to Controller/API/V1 packages * WebAPI: Add API description from Controller's POD- Update to version 4.5.1518003872.3977d2f5: * Run perltidy again (#1577) * Fix perltidy complaints (#1576) * Give 404 rather than 500 on invalid asset route (#1575)- Update to version 4.5.1517920216.2250682a: * Take latest version of Selenium::Remote::Driver (#1570) * Big rework of the GRU limit_asset task (#1569) * Fix broken links in openQA documents * Update Installing.asciidoc * Add pager for comments on group overview (#1561) * Add help box for group filter * Fix testsuite descriptions if default config not present (#1554) * Test subgroup filter and form * Allow to expand nested groups by default * Add filter for subgroups * Check qemu pid before starting job (#1565) * Require < 1.21 of Selenium::Remote::Driver * Downgrading selenium drivers during test phase- add fonts for chromium test suite - and remove currently broken tests (https://progress.opensuse.org/issues/19652)- Update to version 4.5.1516716144.98db9c99: * Improve error handling in group overview (#1562) * Do not remove forwarded-for=https headers (#1558)- Update to version 4.5.1515767133.56cd6ee5: * Support nested OpenQA::Parser objects * If no parser format is supplied, return a OpenQA::Parser::Format::Base object * Add POD documentation for OpenQA::Parser::Result::OpenQA * Add documentation for OpenQA::Parser::Results and move search() in proper class * Move search_in_details() in a new class that inherits from OpenQA::Parser::Results as it is openQA specific * Add documentation of OpenQA::Parser::Result * Move methods and attributes from Parser to Base format * Simplify spec format definition and move common displayed fields to openqa specific result classes * Drop support for creating collections with package global variable (useless now) * Make possible to upload in all the supported format and add tests for it * Add other tests, bring back coverage and fix wrong Node val() assigment * Return a OpenQA::Parser::Result::Node object when getting unstructured data from result * Make parser now really recurive, add also support for nested data structure with unit test * Make LTP parser tests output compliant to openQA tests results * Run parser test in parallel * Add possibility to store / serialize file content too within the parsed result * Add test to check DB consistency with parser extracted results * Move format specifications to separated namespace * Add XUnit tests * Add basic XUnit parser and schema * Clean LTP and include schema inside parser file * Add support for nested Results collections (required for XUnit) * Use functional interface in exposed api * Make collections serializable for unstructured data * Add accessor for unstructured data * Ask to include result only if the specific parser can * Move include_result option to specific parser that needs it * Provide also functional interface * Serialize single Results object as seen by to_hash() and add tests * Add tests when parser errors * Support hashifications of unknown objects * Add unstructured data test * Add reset method to parser, add and cleanup tests * Make serializing possible for collections with different OpenQA::Parser::Results objects * Add possibility to export/import the Parser to JSON, add also tests * Add serialization tests for junit spec * Tidy OpenQA::Parser::Result * Hide name field in JSON encoding of OpenQA result - but keep serializing it * Add example of new format specification for LTP * Simplify LTP spec definition even more * Get hash representation automatically of attributes if they can be rendered as hash * Add backword support for v2 format and add unit tests * Rename subtest to avoid Perl 5.18 complaints * Refactor write of parser result data * Add optional extra list that can be filled by type spec parser * LTP specification: Environment is optional inside result in new format * Add support to serialize/deserialized nested data structure * Add serialization capabilities to parser, and add tests * As classes are representing merely what's the json content, include them in the LTP module file * Add test data example for LTP results format * Add support for LTP specification in OpenQA::Parser * Generalize parser results, and subclass to specific implementations * Adapt parser tests, since now default value for script is 'unk' * Generate test module result from parsable extra_tests * Parser: return unk for test script if does not exist * Add search between parsed tests, link results and tests * Draft for JUnit parser * Prevent worker status selection to sort (#1555) * Unify code for scheduled/running table and fix sorting (#1556) * Remove leftovers in t/api/02-assets.t (#1557)- Update to version 4.5.1515509269.fa07a084: * Remove assets from disk when deleting database entry (#1553)- Update to version 4.5.1513750232.be133588: * Add basic setup of multi-machine worker (#1544) * Allow deleting assets via web UI (#1551) * Deal properly with environment variables that can change logging (#1537) * Fix deletion of jobs referenced as last use of asset (#1549) * Show assets by job group * selenium test: Allow configuring mojo port * Split asset tables in used and untracked assets * Refactor data size rendering in JS and reduce precision * Set App mode in WebSocket server (#1548) * Fix repos gone too early: assign REPO_10 to jobs as well (#1547) * Retidy - Perl::Tidy 20171214 has different formatting (#1546) * Update installation steps for postgresql (#1538) * branding: openSUSE: Add Kubic (#1539) * Change the logs timestamp to ISO8601 (#1542) * Add documentation for postgresql migration (#1530) * Fully fix asset caching without test caching (POO #29208) * Fix job group update issue (#1533) * Hide worker properties if no login (#1534) * Switch to fontawesome 5 (#1531) * `limit_assets`: remove asset that breaks limit, not next one (#1536) * Remove all assets from DB that are gone (#1535) * Allow to query live data from api, adapt tests * Display additional information in the worker's table * Add panel and popover to show job detail * Make searchable field and fix DataTable loading * Add openqa-setup-db service that will create postgresql database (#1528) * Retrieve worker stats data * Do not query by default websocket server to display worker informations * Fix tests to expect new columns * Show size of assets exclusively kept by a group * Accumulate size of assets exclusively kept by a group * Document fast initialization of local tests (#1527) * Add column to groups with size of exclusively used assets * Also store if the asset is fixed in the DB * limit_assets: Use DBD::Pg directly for querying job asset * Check all columns in test for asset table * Show last use of asset in assets table * Ignore chromedriver logs * Show asset size * Write info about assets kept during cleanup to db * Improve comments in limit_assets * Fix PRJDIR error * Add support for colons on worker class * Add WORKER_CLASS to job_list filter * Fix caching of assets without caching of tests (#1521) * Accept a lower coverage - we removed code * Move worker log test to 24-worker.t * Schema.pm: Remove unused functions (increase coverage) * Remove SQL files for SQlite and for 2016 * Have our services require postgresql server to be up * Adopt generate-packaged-asset to use postgresql * Import log_error in OpenQA::IPC * Test: increment unstable_worker ticks and wait for each one to be ready * Remove more traces of Sqlite support * Provide t/test_postgresql to setup a temporary postgresql * Fix more test cases * Prepare a proper DB for the scheduler full test * Fix t/ui/22-job_group_order.t by providing sort_order in fixtures * t/ui/13-admin.t: Postgresql sorts RAID at the end * Sort table settings by key to have reliable tests * t/api/02-iso.t: Do not rely on hardcoded job number * Give WebSockets server its assets * Sort the previous jobs in worker table by ids * Skip all tests requiring a database * Test fixtures: restart the postgresql sequence * Fix t/17-build_tagging.t not to depend on Sqlite specifics * ui/04-api_keys.t: Don't rely on ids in fixtures * 14-grutasks: don't rely on DB sort order * Drop sqlite3 support * branding: Update SLE staging links (#1523) * Use log_info for worker activities (#1519) * branding: openSUSE: Add caasp (different bugzilla naming variant) (#1522) * Tidy the sources * Do not cast to int worker_status timer * Propagate error on IPC dispatch call * Use WORKERS_CHECKER_THRESHOLD to detect dead workers as well * Remove printing to debug the result of safe_call * Reduce OpenQA tests verbosity * limit_assets: don't wipe assets for PENDING jobs (#1518) * Allow same group name within different parent groups (#1507) * Apply log level correctly (#1516) * Check if job is valid before starting working on it. * Upload workers log to the webUI (#1502) * Only test basic tests on perl 5.26 (#1512) * Remove IDs from fixtures if they are in sequence (#1513) * Move the $shared_dir to setup_share_dir * Print project directory upon worker's init failure * Fix documentation generation script * Avoid warnings during test runs (#1511)- Add local-db subpackage to create local postgresql database for ease of use- Update to version 4.5.1511814842.53907890: * Make barrier option to automatically destroy the barrier if jobs belonging to it fails (#1498) * Improve web editor (#1510) * Remove outdated imports of JSON module (#1509) * Use Cpanel::JSON::XS in step/edit.html (#1508)- Update to version 4.5.1511709996.0670f622: * Use OPENQA_TEST_IPC for 12-admin-workers.t (#1506) * Poll status less often not to stress the server * Adapt coverage threshold * Mark workers dead when they disconnect from WS * Make full stack test more robust by adding more assertions * /tests/overview: Change sorting to show all machine variants together (#1489) * Use Cpanel::JSON::XS directly to avoid overwrite mess * Extend apparmor permissions for /usr/share/openqa/lib/** (#1504) * Test multiple perl versions in travis CI * Ignore specific 404 errors in the javascript console * Click away the feature tour in full stack * Make 21-admin-needles more robust * Clean VHD and VHDX images in cache * Treat VHD and VHDX images as HDD assets * Replace logrotate config with what we use in production (#1500) * Fix function names in ui tests * Rename PhantomTest to SeleniumTest * Remove support/work arounds for phantomjs * Use headless chrome instead of phantomjs * Use proper name and directory for PhantomTest * Update Cache documentation (#1495) * Make path of changelog configurable via config file * Add changelog for web UI * Avoid creating useless commits (#1497) * Add _ONLY_OBSOLETE_SAME_BUILD, _NOOBSOLETEBUILD -> _NO_OBSOLETE * Multiple loggings channels * Log Uniformization * Make sure /tests/overview shows test suite descriptions for all machines * Display job name on dependencies list * Worker: use population as scale_factor * Add websocket server test to cover errors when updating worker seen status and population update * Make threshold for worker_checker a constant, and tight the bond between the status timer and the timer for checking inactive workers * Use in_range from OpenQA::Utils in scheduler-full test * Best effort to let know worker population of different WebUIs * Move worker configuration reading to Worker::Common, making it easier to test and slim down the startup script * Remove already superseded default inactivity timeout from script/openqa-websockets * Remove keepalive message and introduce dynamic slot allocation for worker_status timer- adapt build dependencies to Cpanel::JSON::XS- replace phantomjs with chromium/chromedriver- Update to version 4.5.1509097496.8b8e8e20: * Prevent use of job_module_stats when showing jobs of worker * Fix sorting in table for previous jobs of worker * Remove all remaining uses of job_module_stats * Fix accessing job module stat 'unk' * Worker: Wrap asset_lookup() query in eval/if * Add API description for worker route * docs: Prevent parsing of '#' as markup * Allow admins to fetch the worker status by json * Fix name of the SUSE company * Prevent showing duplicated bugrefs twice * Fixing the package to build with newer assetpack (#1485) * Mention repos for Leap 42.3- Update to version 4.5.1508961373.6d2e83a0: * Scheduler: Add option to deal with slow workers that could be detected as dead. * Scheduler: Handle stop/restart cleanly * Respect log level configuration even when no log file is set (#1413) * More prominent color for closed bug references, old ones for open bugs (#1412) * Scheduler: implement retrials before declaring a job not accepted by a worker * Scheduler: add option to wakeup when we receive new jobs * Adjust full-stack tests scheduler default values * API/Worker: Get updates from job that match the worker id * Revert "Permit a dropped test coverage for now" as we are covered now * Worker: send worker_id when updating setup status * Job: Return error messages when worker doesn't send id * docs: Move label and bugrefs doc from wiki * docs: Add description of closed issue visualization * Use OPENQA_TEST_IPC in more tests due to scheduler changes * Scheduler: add code comments, refactorize and simplify code * Include '.' in INC for 24-feature-tour.t (#1420) * Scheduler: Remove EXPBACKOFF option and default to binary * Scheduler: Remove shuffle option. Is new default now, if we don't shuffle free workers we might go into starvation since they can keep failing * Scheduler: schedule() now returns allocated jobs and failures * Websockets: distinct error while dispatching job over ws * Improve error if a worker cannot connect to a WebSocket (#1416) * Conflict no-cleanup worker with normal worker (#1417) * Scheduler: Add basic unit testing * Scheduler: remove retrials and workers cache * Scheduler: use another state for jobs that have been assigned but are not yet in running status * Worker/Websockets: Make worker send status messages, and websockets reaping jobs that are not matching states * Websockets: print details of messages received from unknown workers * Websockets: remove (now) misleading debug message * Worker: do not die in the loop when current_host is not set * Scheduler test: simulate unstable workers * Workers: collect error if we fail dispatching commands to websocket dbus service * Scheduler/WebSockets/Worker: update job state to running from worker responses * Scheduler: now job allocation checks are not needed anymore inside scheduler * WebSockets: use set_running when updating job status (#1426) * Add support for custom links in footer * Fix staging link for CaaSP * Worker: increase keepalive timer * Seperate footer links from footer legal part * Add 'report Bug' for OpenQA product * Scheduler: sleep when we have nothing to do * Adapt scheduler tests to new sleep mode * WebSockets: reset to schedule state if we detect stale assigned jobs * Websockets: set default appname - which is used in error templates * Websocket: wrap database transactions in try catch so we can debug dbus service errors * Create base for fullscreen mode on group overview site * Include just show latest comment feature * Add disable comments feature in group overview * Add fullscreen to group overview and rewind comments part * Fix uninitialized value error and typos * Add autorefresh for builds and comments in group overview * Make auto refresh rate adjustable * Fix sporadic problem of systemd service start (poo#21004) (#1430) * Add description part for api routes at not_found page * Add a quick tour to openQA * Enable feature tour by changing database entry * Adjust ui test * Replace old DEPENDENCIES.txt references to cpanfile (#1423) * Templates: improve error handling in running_table (#1427) * Utils: Flush log output when we don't use Mojo::Log * WebSockets: finish connection when we don't have the worker registered * Workers: print debug output when connection is closed * WebSockets: enable required plugin on setup * Add tests for WebSocket disconnection handling * Add missing figure for closed ticket labels * Prevent use of job_module_stats when showing jobs of worker * Fix sorting in table for previous jobs of worker * Remove all remaining uses of job_module_stats * Fix accessing job module stat 'unk' * Treat ASSIGNED state as in execution * Subscribe start_job/stop_job events before we call send on websocket connection * Worker: reset internal state if we fail contacting the WebUI * Worker: Do not cleanup if pooldir is not set * Add support for multiple distri/version/group on /tests/overview * Websocket: Do not kill connections due to inactivity (meant mostly for browsers) * Dereference hashrefs before using 'keys' * Check whether description available before printing it * Cover the websocket server to avoid uncovered changes with CI builds * Include all relevant distros when linking overview * Use Mojo::Log for logging worker's output * Refactor worker status messages * Cover main OpenQA.pm, which was left with low coverage * Changes the log level to debug if --debug or --verbose is applied. Default is info level. * Fix use of undefined $email by using default icon instead (#1444) * Sync needles when caching is enabled * Use cache_tests from isotovideo engine * Better reflect job execution through states * Replace tabs with spaces and fix indentation. * Ensure CSS classes are used for Datatables * Add setup state to be polled and tidy up * Test 404 error page * Ensure use of symlinked applications for clone_job/dump_templates/load_templates * Trim less text in overview tables by using CSS instead of custom code * Disable live log/terminal by default * Untie live stream from live log * Make details the default tab also for running jobs * Ensure streams for live view are only consumed when tab is active * Allow info/debug messages in javascript_console_is_empty * Switch to live view by default in full stack test * Move read_test_modules to OpenQA::Utils * Add support for getting test results as json * Fix missing openQA::Client import introduced in 7c91a962 * Improve documentation for contributors * Log IPC errors * make Makefile non-bash environment friendly (#1465) * Add log function log_fatal * Allow filtering by result on 'All tests' page * Add query param for filtering 'All tests' table by result * Adapt bugzilla link to new SLE15 installer (#1466) * Fix filtering by result on 'All tests' page for some results * Test enabling result filter on 'All Tests' page via query * Fix regression introduced in https://github.com/os-autoinst/openQA/pull/1460 * Ignore .pc directory for perltidy (#1472) * Fix missing log_warning import on IPC.pm (#1473) * Cherry pick perltidy fixes from @henrich (#1475) * docs: Add hint about performance impact of VM snapshots (#1474) * Create ResourceAllocator DBus service * Split fullstack tests in different build matrix * Create exists_worker in OpenQA::Utils * Use schema from ResourceAllocator instance, refactor to use exists_worker * Adjust scheduler full tests after the split * OpenQA::ServerStartup: set also appropriate handle when setting up logging, since now FakeApp has STDOUT as default handle * Add safe_call to OpenQA::Utils * Switching to safe_call in ResourceAllocator * Make job update take into account of ASSIGNED and SETUP state * Worker: Reset state also when we loose current_host (due to failure contacting webserver) * Return 0 by default on worker's try_lock_asset() * Worker: Wrap asset_lookup() query in eval/if * Make heartbeat timeout for rabbitmq configurable (#1479) * Add API description for worker route * docs: Prevent parsing of '#' as markup * Allow admins to fetch the worker status by json * Fix name of the SUSE company * Prevent showing duplicated bugrefs twice- Provide clone-job, dump-templates, load-templates as symlinks in bin-path- Update to version 4.5.1501694730.25c355a8: * OpenQA::WebAPI::Controller::API::V1::Job: catch errors and return no jobs when we fail to contact dbus * Schedule jobs without polling * Make workers only accept one job from one webui - also check if we dispatched the job correctly to the worker * Update worker seen status from ws keepalives if thought dead * Set to running just when we are sure the job got dispatched to the worker * Improve error handling when we fail resetting scheduling state * Do not use in the workers next_tick anymore when accepting the job * Fix the keep alive timer handling in worker * We need more timers to be host specific * Scheduler: Be more strict with job states * Apache: SetEnv proxy-nokeepalive 1 * Permit a dropped test coverage for now * Scheduler: further optimizations and refinements * Get rid of notify_workers, and from the signal that was associated to it in the dbus scheduler service * Remove job grab from the API * Fix bugzilla links for CaaSP (#1395)- Update to version 4.4.1501432550.4c72a17b: * Some more permissions required for power8 worker (#1405) * schema: Add job module statistics to jobs table * Use job module stats from jobs table in 'All Tests' * Add . to INC for tests that use local modules (perl 5.26 doesn't) (#1406) * Update job module stats when module inserted/updated * Fix typo in networking documentation (#1407) * Add the job module statistics to the migration code (#1409) * SLE 'LeanOS' corresponds to 'Server' on bugzilla.suse.com (#1393) * Dynamic feature infos for users (#1388)- Update to version 4.4.1499449966.bd9ee915: * Replace die with log_error * Avoid edge case of asset sizes being incorrect. * Cache: resolve to current host when host URL cannot be resolved (#1352) * job templates: Fix removing options when finalizing row * job templates: Fix check for test selection when finalizing * job templates: Improve coding style in post * Fix bullet points in dashboard (#1356) * Provide a default (0) to max_rss_limit so that the config actually works (#1358) * Cache: Make each log message uniquely identifiable * Allow plugins to load specific configurations * Remove auth_config from OpenQA::WebAPI::Auth::* * Add fullscreen base into project * Add form entry for fullscreen view * Fix navbar to not hide if dropdown selected * Change help popover description in filtersection * Correct main controller and index page * Add error message for missing webserver * Also recognize kde bugrefs in Utils.pm (#1366) * Add link to CaaSP staging (#1360) * Also recognize fdo bugrefs in Utils.pm (#1367) * Database change for bug status * Improve assets log messages (#1365) * Documentation for GRE (#1369) * Extend sorting by time to parent group overview (#1362) * Add workaround for PhantomJS in needle edit test * Fix typo workround -> workaround * Prevent bugref_to_href replacement at end of title (#1372) * Refactor rendering response for server-side DataTable * Refactor server-side code for audit log * Refactor server-side code for previous jobs of worker * Test takeover of exclude areas in needle editor * Fix wrong HTML, input must not contain text * Show exclude areas in needle diff * Show exclude areas in needle editor always * Document areas * correct typo (#1379) * Enable INTEGRATION_TESTS (#1384) * Retrigger download retry for incomplete downloads * Fix perl structure printed in the logs * Check when asset has been removed by hand * Changing from using pure perl to Mojo::Asset::File * Allow the cache to use a configurable sleep time * Unlock the asset before the next download retry * Add unit test for cache * Add 25-cache.t to testrules.yml * Set sleep_time to 5 again * Remove unnecesary code from cache tests * Refactor server handling to avoid race conditions * Improve handling of logs and directories * Improve cache tests * Improve server_start and port handling * Remove unnecesary calls to Mojo::Asset::File * Fix test directory to share/tests (#1383) * Sort the failed modules on their timestamp not by their name (#1378) * Add test for "Server unavailable" * Inform user when OpenID login fails with no message from OpenID provider (#1380) * Increase the grace timeout to have uploads finish (#1385) * Notify the workers only when there are no errors * Create jobs from settings within a transaction * Increase information in logs if a wrong secret is used (#1374) * Avoid OpenID login to clutter log files (#1386)- Exclude not supported and not building i586 in spec file rather than project config - Use internal macro for %setup - Cleanup description and doc section- disable tests on tumbleweed as they hang - need to debug this regression first- Update to version 4.4.1496302635.5e9b3f9: * Replace die with log_error * Avoid edge case of asset sizes being incorrect. * Cache: resolve to current host when host URL cannot be resolved (#1352) * job templates: Fix removing options when finalizing row * job templates: Fix check for test selection when finalizing * job templates: Improve coding style in post * Fix bullet points in dashboard (#1356) * Provide a default (0) to max_rss_limit so that the config actually works (#1358) * Cache: Make each log message uniquely identifiable- Update to version 4.4.1496150882.49e14ecd: * Avoid OpenQA::IPC::ipc being called premetaure (#1185) * Add $prjdir prefix for relative filenames in Needles * Add option to change $prjdir on the fly * Adapt timers helpers for multi-hosts * Make api_call not to recurse into IOLoop, add callbacks * Adapt worker registration to multihost * Adapt jobs helpers to non recursive api_call and multihost * New multihost workers.ini * Per-host working directory support * Multihost commands parsing * Adapt worker tests for non-blocking api_call * Use OpenQA::Utils log functions in worker * Use share/factory directory instead of factory link * Replace dirs parsing by one liners * Remove dead code * Use testcasedir helper instead of removed static * Add some unit tests * Fix generate/packed-assets not to require dbus session (#1186) * Avoid 404 errors on scheduled jobs * Take 4 travis jobs as success * needle editor: Validate needles/tags in JavaScript (#1189) * Reduce the number of travis jobs (#1188) * Duplicate the job if the worker is terminated * Simplify selenium using code * Do not do any jsonfile path processing * Prevent uninit ws variable warning * Pass query params as params key for duplicate * Allow api_call to be called without callback * Change the Mojolicious version requirements (#1195) * Fix needle path check (#1196) * Fix the 12-needle-edit test to leave the data in place * Import log_error before using it * Introduce project share directory variable * Adapt test to use share directory * Switch test distro from pitux to tinycore (#1203) * Fix last remnants of global url and ua usage * Add image upload to full stack test * AMQP: Declare exchange passive and durable (#1202) * Fix an error when job result is "setup failure" * Prepend sharedir when looking for needles with relpath (#1205) * Add full stack test for setup failures * Fix 24-worker.t * Fix build lookup for single groups (poo#15988) (#1204) * Allow override of the usual setting precedence order (#1200) * Fix undefined warning for _stop_job_finish (#1207) * Shared worker documentation * Document referrer configuration and label:linked * Fix job_timeout timer not being removed after stop_job (#1209) * Add get_timer getter for worker timers query * Add tests if start_job set proper timers and stop_job removes them * Improve code preparing data for test overview * Synchronize 'TODO' filter with review badges * Add help popover for 'TODO' filter * Show help popover details link in new tab * Enhance jobs list in worker page (#1212) * docs: Ensure pool dir exists when starting worker manually (#1213) * Fix UI test skipping when modules not available (#1211) * Avoid creating duplicit dependencies (#1214) * Update documentation for a more obvious flow (#1218) * branding: Add casp reporting links (#1219) * Add notice to clone_job.pl help text (#1222) * Do correct DISTRI-VERSION case dir lookup * Fix AMQP SSL wide character JSON encoding (#1224) * Refactor test for scheduler dependencies (#1225) * Fix apparmor profile to let worker read from /other (#1228) * Update GettingStarted for some Fedora repo changes (#1229) * Fix time display regression introduced by f127654 * Harmonize running/scheduled time string also in UTC * Show absolute time in tests list for finished as well * Fix typo and make vhost config more readable * Update Pitfalls.asciidoc * Add pitfall for fake authentication method * docs: Correct asciidoc syntax for pool instance table * clone_job.pl: Display description with examples on '-h', too * Update create_admin script * docs: Improve language of 'using snapshots' section * Fix synchronization of TODO with badges * Add link from test details to assigned worker * Fix bugzilla links as CASP was renamed to CaaSP * docs: Delete reference to inactive stable repo (#1230) * needle editor: Fix errors appearing in JS console * needle editor: Show new tags in own line * needle editor: Display all tags in the same way * Allow configuration of how builds are sorted in web UI * Add id to comments over API to allow referencing * Fix needle editor when taking matches is disabled * Fix openqa_web docker instance running * Update Dockerfile to host openQA on Leap 42.2 * Change deprecated "MAINTAINER" instruction * Add instruction "LABEL version" * Use the default openID provider * docker: Remove pool volume unused by webui * Fix error when running the worker container * Fix dockerfile for webui * Fix dockerfile for workers * Update README.md for docker section * Document running selenium UI tests (under Leap) (#1250) * Make needle edit test case less specific * Prevent double machine tag output in 02-iso.t * Add option for 'isos post' route to deprioritize old builds rather than obsolete * needle editor: Format new tags bold * needle editor: Prevent adding empty tag * docs: Add documentation for 'triggering tests' * Harden loading of auth modules with whitespaces (#1253) * Allow redirects for clone_job requests (eg to ssl) * Allow annonymous read access to operator tables * Fix failing admin test * Fix bugzilla reporting links for CaaSP * [docs]: added documentation about setting up ssl (#1257) * client script: Don't encode URL twice (#1260) * Allow api_call to be called without callback * Add Cache * Enable caching on the worker * Improve Cache package and tidy up the code * Fix cache.db problems * Ensure the asset has the proper name * Add TESTPOOLSERVER variable for caching * Refactor to allow CACHEDIRECTORY to replace share directory * Simplify api_call nesting * Fix the ISO expansion for local assets * Let's set reasonable goal for codecov * Work on testing cache * Do not exclude .git from syncing * Harmonize the keys used for assets * Add newlines to log output * Improve cache directory * Catch errors on cache downloads * Fix perlcritic errors * We need Mojolicious 7.24 for max_response_size * Implement download_asset so we can actually test caching it * Remove -E option from flock - we do not check the exit status * Make sure assets in pool are handled correctly * Add support for multiple group, no build on /tests/overview * docs: Add hint about multiple groups, no build * Call rsync of tests in a child process and notify webui * Move OpenQA::Cache to Worker namespace * Trying to make workers.ini more descriptive * docs: Add explanation for job priority (#1262) * Schedule worker reregistration in case of api-failure * Add more logging to job notifications * Use host_port when parsing URL * Prevent various timer loops * Do job cleanup even in case of api failure * Ensure uploaded assets have correct perms (#1263) * Change $testpoolserver only if passed as option (#1264) * Set read permissions for downloaded assets (#1267) * Ignore module flag 'important' (#1266) * product log: Don't show actions when not at least operator * Make assets, workers and API help publicly available * needle editor: Fix inserting tag via middle mouse button (#1269) * Fix restarting jobs from worker page (#1272) * Merge 'Status' and 'Connected' columns in workers overview (#1273) * Add anchor for build results on index page (#1265) * Lower down quantity of automatic carryover * Add environmental variable to skip online tests * Be specific which text element we want to test * Fix hardcoded cache.db file * Fix assets not being removed * Force read_db after a write * Add subtest for Cache * Improve log output for label carryover * Ensure that label carryover is done correctly * Fix the recursive $db_file appending (#1279) * Tidy the code after last hot fix * Relax the regex for build values in tag: comments again * Don't obsolete jobs for VERSION-BUILD tagged builds * needle editor: Distinguish tag/area selection in check * needle editor: Test verification when not copying areas * Improve little triangle sign below a screenshot (#1285) * Add ignores for db.lock and phantomjs log (#1287) * Correct 'softfailed' reference to passed (obsoleted) * Ensure consistent naming of 'failed'+'softfailed' in all occurrences * Fix overriden shared $dir worker registration (#1291) * Add a Contributing section * Add explicitly index and current.pdf * Stop distinguishing softfailures * Fix typo 'parallel' (#1290) * Adjust grid wrapping in build tables (#1286) * Use space indendation consistently in javascript files * Delete w/s at EOL in javascript files * Add 'build-results' anchor for group-overview page, too (#1281) * Replace old 'important' behaviour with 'ignore_failure' (#1297) * Give failed screenshots back the red border (#1300) * Adjust test module flags on Details page for ignore_failure (#1299) * Document the 'norollback' flag in WritingTests (#1298) * Better error msg for openqa client (#1303) * Improve 'Downloading failed' message (#1302) * Refactor 05-scheduler-dependencies.t (#1306) * Shorten build-numbers with dots to prevent overlapping (#1305) * Fix "only tagged" for tags with version (#1296) * Do not upload empty serial_terminal.txt (#1274) * Makefile: Allow to skip checkstyle (#1304) * Fix missing space in log debug message (#1307) * Register job assets even if one of the assets need to be skipped (#1310) * Test whether admin table displays needles which never matched * Show needles in admin table which never matched * Improve logging in case of upload failure (#1309) * Improve product fixtures to prevent dependency warnings * Handle wrong/missing job dependencies appropriately * clone_job.pl: Print URL of generated job for easy access (#1313) * Allow lscpu to read all of /proc - but only lscpu (#1315) * clone_job.pl: Skip downloading generated assets in all cases (#1314) * Fix invalid HTML * Don't use name attribute on div element for markdown * Fix indentation in overview.scss * Fix showing long needle name in hover popup * Prevent DB exception when adding tests in job templates (#1318) * Remove duplicate "current step" (#1319) * Refactor Cache.pm to use SQLite instead of json * Update cache full stack test * Fix minor race condition * Increase test coverage * Use cache.sqlite instead of cache.db * Detect and set current version of openQA, display it in the footer (#1316) * Add service file for workers with "no cleanup" (#1320) * Prevent tags from getting cut by long build numbers (#1321) * clone_job.pl: Fix generated job URL to be the receiving host (#1326) * Unlink existing asset symlinks on syncing (#1323) * Move OpenQA::Test::* modules to test directory (#1325) * Improve admin test (#1327) * Fix makefile syntax (#1328) * Avoid line break after h4 in midori and co (#1333) * Implement a config option to restart workers that grew too big (#1339) * Allow cache to handle 5XX errors and retry 5 times (#1337) * Inspect failed modules in /tests/overview (#1335) * Fix print() on closed filehandle $log (#1334) * Replace file_content() with Mojo::File (#1331) * Disable printing time when logging to STDERR * Add more tests to configuration parsing * Fix bugzilla reporting link for SLE-12-SP1 (#1332) * Make 'TEST' the only proper mandatory test setting (#1126) * Avoid unit test to write on source code directory (#1341) * Fix breakage introduced by https://github.com/os-autoinst/openQA/commit/659464d19b02e541f2529bd313c39681c71adfcf (#1343) * Add scheduler test to cover OpenQA::Scheduler::FakeApp (#1345) * Fix documentation publishing on gh-pages * Make sure a valid up-to-date license in all files * Fix doc generation - testapi (#1347) * Add unit test to fix codecov "uncovered changes" (#1348) * Add direct link to video position (poo#19300) (#1342) * Avoid github and use a CDN for chosen.jquery (#1350) * Correct Typo in Firewall config file (#1351)- Prerequire needed group nogroup- Also provide systemd services for workers with '--no-cleanup'- Update to version 4.4.1495052041.c6a5bc94: * Remove duplicate "current step" (#1319) * Fix minor race condition * Increase test coverage * Use cache.sqlite instead of cache.db * Detect and set current version of openQA, display it in the footer (#1316) * Add service file for workers with "no cleanup" (#1320) * Prevent tags from getting cut by long build numbers (#1321) * clone_job.pl: Fix generated job URL to be the receiving host (#1326) * Unlink existing asset symlinks on syncing (#1323) * Move OpenQA::Test::* modules to test directory (#1325)- bump mojo requirement- Update to version 4.4.1489864450.251306a: * Make sure assets in pool are handled correctly * Call rsync of tests in a child process and notify webui * Move OpenQA::Cache to Worker namespace * Trying to make workers.ini more descriptive * docs: Add explanation for job priority (#1262) * Schedule worker reregistration in case of api-failure * Add more logging to job notifications * Use host_port when parsing URL * Prevent various timer loops * Do job cleanup even in case of api failure- Add the openQA.changes file to be distributed as public/Changes on the web-ui- Update to version 4.4.1484732113.4fb90841: * Document filtering * Fix documentation generation (#1177) * Fix corner buttons (#1176) * utils: Add kernel bugzilla bugref (#1175) * Do not run tests for GH_PUBLISH=true * Mojolicious 7.19 has broken SSL support - blacklist it * Switch to CDN for fontawesome * Fix missing images in documentation (#1180) * Do not even run the coverage target if GH_PUBLISH is true (#1183)- bump requirements to Mojo and AssetPack- add Sort::Version requirement- Update to version 4.4.1484213177.5ef2a6e4: * Add css class to click on action (#1147) * client: Support sending JSON data (#1150) * Test both phantomjs and chrome on travis * Exclude AssetPack >= 1.30 - it will break fonts * Sort build versions correctly (#1136) * Add optional profiling support using Mojolicious::Plugin::NYTProf (#1153) * Add tests for client script * Don't use config file as database lock file (#1157) * Fix build of the package: we need a db directory to lock now- remove YAML and Socket::IO::INET6 dependencies- Update to version 4.4.1482329765.866bba8: * Improve buttons in interactive mode * Fix command API route * Synchronize INTERACTIVE and STOP_WAITFORNEEDLE_REQUESTED * Change the format for developing with snapshots (#1093) * Fix sorting of needle table (#1092) * Add short route to individual job results '/t:testid:' (#1089) * doc: fix typo (#1096) * Fix AMQP reconnect timeout config var (#1098) * Add AMQP connection error msg to log (#1099)- add new require on time::parsedate- Update to version 4.4.1481828911.8296cb4: * Update worker apparmor file from production worker log (#1078) * Add brc (Red Hat Bugzilla) and bgo (GNOME Bugzilla) labels (#1083) * Auditlog: display event time on hoover * Auditlog: add page and rows query options * Switch audit log to server side processing * Use system user to create system events * Add new Time modules dependencies * Add page displaying single event * Improve search query parser to support multi-word queries * Don't bother with event data shortening- add bcond_with tests to run phantomjs optionally- Update to version 4.4.1481216307.2d2b18a: * worker: Prevent use of uninitialized value (#1066) * Copy over policies from os-autoinst * Fix usage of qw(SINGLE_VALUE) in use statements * Rework websocket server (#1057) * client: Respect --json also in case of an error (#1068) * client: Set 'Accept'-header in any case (#1070) * Return 404 on status update for job without worker * worker: Abort job if considered dead by web UI * Improve misleading comment * Comment events: Drop unneeded fedmsg conditional, include id (#1065) * Improve log message when job considered dead (#1075) * Disable carry-over for job 'labels' to support new use cases (#1071)- Do not package removed files script/migrate_images and backlog- Update to version 4.4.1479741639.90bdf0f: * external_reporting: Fix differing header level in description (#1012) * Add test for parents on index page and parent group overview (#1015) * Show build tags on parent-level (#1018) * Add a 120 column limit to .perltidyrc (#1017) * Fix a few formatting mistakes and remove repetitive method calls (#1020) * docs: Update openSUSE repos to current supported (#1021) * Fix URLs in dashboard when version/distri differ (#1024) * Show submenus on click (#1025) * Update bootstrap to 3.3.7 * Wait a bit in tests if there is an ajax call- update cache for bootstrap-submenu- Update to version 4.4.1478599354.3d748dc: * Fix job group overview without description (#957) * Don't free worker before artefacts are uploaded (POO #14378) (#958) * Improve override needle test (#962) * Use textareas in test suite editor (#961) * Fix worker error reporting when asset cannot be found (#963) * Make .json easier to use and include more data (#965) * Add API routes for job group parents (#952) * Hide empty job groups from index page (#967) * Optionaly inherit command line variables in parent (#951) * Add gzip and rsync to worker's AppArmor (#968) * Only store md5_dirname if the image is in /images (#959) * Fix malformed HTML * Fix malformed HTML (#970) * Prepare CACHEDIRECTORY example in workers.ini and provide profile (#969) * Implement Drag & Drop group editor * Add support for github 'bugrefs' * t: Delete unused (disabled) 'use Test::Output' * t: Ensure proper output catching * Improve usability of job group property editor * Replace all '...' with '…' in web UI * Add assert_script_run description * Allow '@' in asset name (#979) * Fix list of needle tags in needle info popover (#977) * Allow worker profile to access fixed assets * Fix download of fixed assets from web UI * Reindent 01-jobs fixtures * Use url helpers to map the asset path to URL * Add help text using popovers, title and placeholder (#983) * Add missing argument for hmac timestamp validation * Give tests without fails a no-TODO tag (#960) * Trying to make peace with adamw over locate_asset * Add a repository as test fixture to test subpaths * Show tags on index page * Add API auth tests * Improve help popups * isotovideo: Remove redundant '|| undef' (#989) * branding: openqa.suse.de: Update staging to current SP3 (#988) * Show parent groups in navbar (#974)- have openqa_worker own /var/lib/openqa/cache- Update to version 4.4.1477579540.21d4009: * Use textareas in test suite editor (#961) * Fix worker error reporting when asset cannot be found (#963) * Make .json easier to use and include more data (#965) * Add API routes for job group parents (#952) * Hide empty job groups from index page (#967) * Optionaly inherit command line variables in parent (#951) * Add gzip and rsync to worker's AppArmor (#968) * Only store md5_dirname if the image is in /images (#959) * Fix malformed HTML (#970) * Prepare CACHEDIRECTORY example in workers.ini and provide profile (#969)- Update to version 4.4.1477110901.763fe71: * Step controller: split init into 2 functions * Fix coverage skipping files with 't/' in path * Test source view from running * Treat #details tab as all the others to fix back button * Add test for switching tabs in tests result view * Some fixes for the new results / running page * Fix SQL query to query important jobs * docs: Update OBS references * Upgrade to Leap 42.1, and fix apache2 starting problem * Live view: simplify drawImage * Be way more careful with history manipulation on results page * Treat # and '' the same for history management * Allow sha1sum for os-autoinst:2144a20c * Allow git for os-autoinst:d29266f * clone_job.pl: Add option '--skip-download' * Give the user better hints on what we expect for the expiry date * Do not create a link_post for reschedule isos * Use the proper API to get the data of the selected row not the first row * Replace the broken PNGed SVG with the real one * Talk to os-autoinst through HTTP instead of the file system * Replace document.ready with $(fn) * Fix interactive buttons * Fix upload of images during needinput * Make sure the worker stops at signals * Fix spelling of existent * Add web UI controls to select 20/50/100/400 previous results * limit_assets: when sizelimit is exceeded, remove more * Be more graceful when stopping the backend * Always set a t_finished to now if the job has a final state * Sort the finished jobs by their finished time * Change the order of the tests in the list test * Set a t_finished time in fixtures to have predefined order of finished jobs * Sort the scheduled jobs based on time * Sort the running jobs by Start time * Benefit from the hashsum calculation for our icons too * Remove pauseplay class and image - no longer used * Add more icons to assets and remove what's left in public/images * Remove dead file * Add custom whitespace squish * Use manual whitespace trimming after squish was removed from Mojo7 * Mojo7 removed Mojo::URL::authority, use host_port instead * Add SUSE internal branding with more links * Refresh running modules in #details view * Deal with race conditions when refreshing #details * Create missing results tbl on #details * Reload broken thumbnails on test #details * Correct description for use of OPENQA_CONFIG * Fix build tagging when @ is used * Clarify comment in the dashboard test * Use correct job result in openqa events * Add command_enqueue to worker model as send_command * Export log_error helper in OpenQA::Utils * Add job_set_done and job_cancel to Jobs module and result set * Adapt tests for moved job_set_done and job_cancel * Remove scheduler dbus exports and subs job_set_done and cancel * Remove command_enqueue from scheduler and dbus * Check for user when emitting event * Log iso_cancel for canceled jobs due to new iso and allow job_cancel_by_settings event * Fix typo in worker check during job duplication * Fix counting of cancelled jobs * Update Jobs::cancel to accept $obsoleted option * Use ws_call using well known format to send messages to WS server * Sync property parsing to workers format * Make softfailed a proper final result * Add tests for showing softfails in prev results * Give user_restarted an explicit colour * Remove MySQL from deployments, we never test migrations or deployments * Resort to raw SQL instead of avoiding the schema and still use dbic * Fix DB access error when skipping scheduled children * Test both children skipping and stopping * Accept softfail result as passed * Add test scenarios for job result calculating * apparmor: Add missing /usr/lib/git/git * Make softfailed tests show the right colour * Make non-important failures at least a general softfail * Calculate softfailed at the very end to fix one specific case * Add more tests for corner cases * Carry over also for incomplete and softfailed * Add V1 API for comments * Use API for comments in web UI * Add comments without reloading page * Only redirect to running tab when no # is in url * Clear url hash on test step result preview close * Test for url hash cleanup after preview close * Fix incorrect 21-admin-needles test * Fix calculate_result (again): $overall should cover all * Improve error handling of comment API * Prevent needle editor flickering (progress #12984) * Enforce build order for group overview in tests * Remove unneeded functions of old comment API * Add 'latest' query route * Remove history for step navigations * Replace job_set_done by $job->done in dead job handler * Move dead worker check to websocket server * Add test for dead worker detection * Make build in previous view a link to tests overview * Add test for 'todo=1' query param * t: Fix typo in t/ui/18-tests-details.t * Fix deadworker timer function reference * Fix complex_query and its usage in last route * Render links on 'latest' route directly instead of redirect * templates: Simplify single line statements * Make title for 'previous results' a proper heading * t: 12-needle-edit.t: Try to find overwrite warning more often (poo#12980) * previous: Move current limit where other options are * Add web UI controls to select more builds in group_overview * Add web UI controls to filter only tagged or all builds * Fix workaround label * Fix taking over tags from a workaround needle * worker: Remove tons of work arounds and quirks in upload * Allow cksum to be called in the worker * Upload assets as temporary files and only rename after chksum check * Fix typo * Prevent use of non-existing route in upload_status * templates: live: Fix url_for over 'latest' route * Disable auto-duplication of jobs (poo#13042) * Avoid shift * Test handling deleted needles in needle editor * Ignore deleted needles when showing needle editor * Show warning about deleted/bad needles (needle editor) * Fix admin layout for test suites with long keys Currently test suites slenkins-tests-ceph-control and s390_hsi-l2 * Make apache follow symlinks for assets directory * Fix '0' duration for previous jobs on running or scheduled job * Add link to latest job in each scenario * Allow pinning comments as group description * Fix jobs templates layout * Also filter 'machine' on latest * Vertically align progress bar with build number * Re-add boundary hack * Make 'latest' link more explicit * Do not quote identifiers, solves problem with uppercase column (#838) * use /var/lib/openqa/share/factory/iso path (#849) * Add 'bash' to be able to run 'CMD' (#850) * Add filter from in test overview (#852) * Draw needle match labels after match boxes (#851) * Add lock barriers (#845) * Show custom error pages (#831) * README: Update coveralls icon by .svg version (#853) * Add new job state (#848) * Remove old comment code (#856) * Run optipng on the worker while uploading images (#858) * Add filter for all states and results * Distinguish comment events * Show results and states dynamically * Test whether job still exists in reduce_result * Split Logging support out of WebAPI (#860) * Give the scheduler a home (#862) * Log status update without worker (#861) * dead worker check: use 15 secs not 10, better names, comments (#864) * Fix the stale job calculation for uploading jobs (#865) * Fix path in docs about migrating db schema * Show filter on top and display current filter * Avoid HMAC timestamp mismatch during large file upload (#871) * Give Websockets and Scheduler the home of the webapi (#870) * Label builds where all tests passed as reviewed * Dont grab twice (#874) * Prevent detecting occurrences like bsc#2436346bla as bugref * Replace URLs with the appropriate bugref pattern * Do not rely on WebAPI to find home - require and use an harmless class (#876) * Prevent multiple bug refs per comment to yield incorrect URLs * Add 'match' query parameter for index page * Add 'group' query parameter for index page * Add more faking to FakeApp - so restarting jobs works again (#880) * comment the home detection for scheduler/websockets better * Allow bugrefs being separated by any non-word chars * Fix used needle indication when needles are in folders * Merge match and group parameter * Use $FindBin::RealBin to resolve links for client script (#889) * Fix previous jobs showing up for different machine (#885) * Remove FIXMEs and disabled code in t/ui/15-comments.t (#888) * notify workers when job with chained children done (POO #13746) (#883) * Pass encoded URL filter parameter correctly (#890) * Reintegrate job duplicate (#875) * Mark worker alive for all kind of artefacts (#894) * Small schema change to add an index (#895) * Add IPC debug to websockets too to debug hangs (#896) * update apparmor profiles for ppc64le (#892) * Try harder to avoid long running pre-processing (#897) * Increase session expiration from 1 to 48 hours (#900) * Make ws_send_all WebSocket call not waiting for results (#902) * Avoid DBUS dead locks (#901) * Do not manually render anything on websocket creation (#903) * Prevent error message in log as 'scheduled' jobs are also 'inprogress' (#906) * Add scenario params to limit URLs for previous results (#893) * Handle links to bugs already formatted correctly (#905) * Improve documentation about PosgreSQL (#904) * Test time_limit_days query parameter (#907) * Fix comments test (#908) * Split the images directory even more (#739) * Add anchor links to comments (#909) * Move comments.css to sass reduce copy&paste (#910) * Readd the lost name of the thumb_nail route (#911) * Refactor computing build results (#898) * Show incomplete/skipped bugs, show tooltip on progress bars (#912) * Add link to openQA review (#899) * Fix vertical alignment of progress bars in tables (#917) * Show progress indication in admin needle table (#918) * Track image assets better (#919) * Fix deletion of multiple needles at once (#921) * fix downloading assets to different filename * Fix sorting in admin needle table (#924) * Add JSON representation of index and group overview (#922) * Add filter form for index page (#923) * Add /index.json route and test it together with overview.json (#925) * Fix /index.json route to pass the format (#926) * Fix softfailed results not showing in tests list (#930) * Fix group filter on index when param is empty (#933) * Fix group overview when no builds shown (#932) * t: Add 'Test::Warnings' where missing; Catch all warnings in tests again (#931) * Extend schema of JobGroups (#914) * Fix typos (#935) * reuse a constant boundary to make debugging failed uploads a little easier (#934) * Some code cleanup and more tests (#937) * Fix test result info spacing (#938) * fix loch ness monster bug in 14-grutasks.t (#941) * Load step and needles for failedmodules link async (#936) * Complete API for job groups (#942) * Auto reload result page on state sched -> running (#940) * Update Installing.asciidoc (#927) * Go to bugzilla.suse.com also for bnc# (#943) * Fix going to bugzilla.suse.com also for bnc# (#946) * Improve error handling when deleting needle (#939) * Fix needle deletion via Git (#948) * WebAPI: Delete comments stating the obvious + delete unused routes (#947) * Render bugref links in thumbnail text windows * Test render bugref links in thumbnail text windows * Show job group description (#950) * Add 'fixed' asset subdirectories for fixed assets (#928) (#945) * use locate_asset in register_assets_from_settings (#954) * Rejig compressed asset download, don't leave compressed files (#955) * Fix registration of downloaded assets (broken by 0905559b) (#953) * List needle tags + step icons (#944)- Add missing dependency perl(JSON) for openqa-client- Add missing dependencies perl(Data::Dump) and perl(Getopt::Long) for openqa-client- Add symlink /usr/bin/openqa-client to /usr/share/openqa/script/client- Ghost /var/lib/openqa/share in common subpackage * solves issues when updateing worker with mounted NFS- Remove perl(Perl::Critic) build requirement, added by mistake- Package /var/lib/openqa/share for common subpackage - Pakcage /var/lib/openqa/share/factory/[iso|hdd|other|..] for openQA package- Update base version to 4.4 to express new API of isotovideo- Update to version 4.3.1466434215.021a11c: * No longer export the worker_id as hash entry * Remove job_get from the scheduler * Simplify our theme - split the sass theme from the specifcs * Set an explicit colour on cancelled * Use default bootstrap table class for striping * Use the theme colour in tables * Have our bootstrap theme based on https://bootswatch.com/paper/ * Fix comments test - h2 is the new h1- Update to version 4.3.1464792258.155f49e: + t: Use helper function to wait for ajax + Extend iso post TEST parameter to support a list of tests (poo#10482) + Test for "let TEST parameter support a list of tests" + Enable brackets inside keys in client script + Add first approach for editable comments + Make comments for tests editable, too + Fix indentation of flash and wells on test page + Fix minor mistakes in editable comments + Reduce code-dublication in templates + Add first approach to test editable comments + Test comment editing in test results, too + Check for current user in commenting functions + Adjust t/17-labels_carry_over.t to reflect changes + Add css class no_hover to all /thumbs/ + Improve TEST parameter to support a list of tests + needlediff: Improve similarity text look + Use the nice audio icon (with the correct size) + Use nice icon for wait_serial + add a config setting to specify asset types not to link to + Increase left padding of status icons + Prevent error in group_overview with '-important' builds + Check database configuration with better user feedback + Fix broken string compare slipping into wait_serial icon change + Fix non-ASCII characters in comments + Allow admins to delete any comments + Fix showing editing buttons + Fix regexp for multiple parent jobs + Fix typo in 05-scheduler-restart-and-duplicate.t + Improve log message about 'setup failure' + Support tests/export to get a text format for archives + Fix re-enabling current user role + Adapt to latest AssetPack- add perl(Archive::Extract) dependency (needed by PR#627)- create openQA-client and openQA-doc subpackages - remove DB handling, it's done by openQA itself now- adapt to adam's changes- remove user migration code. no such systems should exist anymore- update base version to 4.3- add modify_needle script- add create_admin script- add perl(IPC::Run) dependency (needed by PR#414)- we don't need JSON::RPC::Legacy::Client- fix rpmlint warnings- add openqa-scheduler.service and openqa-websockets.service- fix fileliist for missing service files- package dbus system policy config - add perl(Net::DBus) to requires- add openqa-gru.service- keep /lib/openqa/share in webui and the symlink in -common. So a plain worker owns no files in share- add --from=geekotest to chown call just to be on the safe side- create a 2nd user and migrate the worker from geekotest to _openqa-worker- run preparetool from the right %post- fix missing ini files link and package new config dir (boo#919548)- Changed path for fetchneedles in post-install echo- don't move ini files in spec, Makefile does it now- include fetchneedles in file list- Update to version 4.1424166204.2ca1601: + Refactor worker scripts and add locking support + Pass worker port to os-autoinst and remove :jobid check + assets replaced /diskimages long ago - get rid of it + avoid "openQA: openQA" as title on main page - looks just silly + remove lib/OpenQA from include path - not needed + fix make test to be coverable and use it in .travis.yml + switch default auth_module to Fake + adding a test to test /admin/machines using phantomjs + skip the tests if phantomjs is not installed- we don't need MojoX::JSON::RPC- reduce mojo require to 5.60- require qemu in worker to get kvm group - add geekotest user to kvm group in worker's %post as qemu is not required by the web ui- fix requires- make it version 4 and require os-autoinst of version 4 too- add BuildRequire perl(Test::Compile)- pre-require openQA-common to make sure the user is created- we don't require png2theora any longer - and actually openQA-worker never did- fix upgrade scenario from openQA to openQA-common- split to openQA, openQA-common and openQA-worker packages- fix post script - remove buildroot macro/bin/shlamb52 1556977054 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqruvwxyz{|}~4.6.1555478309.f6dfdd9b-lp151.1.7771.120.010.040.0.10.0.1     !!! " #$$%%%&&%%%''$$$($$)*+,,-....openqalibDBIxClassTimestamps.pmOpenQAOpenQA.pmBuildResults.pmConstants.pmEvents.pmFile.pmIPC.pmJobDependenciesConstants.pmJobsConstants.pmLiveHandler.pmParserParser.pmFormatBase.pmIPA.pmJUnit.pmLTP.pmTAP.pmXUnit.pmResultResult.pmNode.pmOpenQAOpenQA.pmResults.pmOutput.pmTest.pmResults.pmResourceJobs.pmLocks.pmSchedulerScheduler.pmScheduler.pmSchemaSchema.pmJobGroupDefaults.pmResultApiKeys.pmAssets.pmAuditEvents.pmBugs.pmComments.pmDeveloperSessions.pmGruDependencies.pmGruTasks.pmJobDependencies.pmJobGroupParents.pmJobGroups.pmJobLocks.pmJobModules.pmJobNetworks.pmJobNextPrevious.pmJobSettings.pmJobTemplates.pmJobs.pmJobsAssets.pmMachineSettings.pmMachines.pmNeedleDirs.pmNeedles.pmProductSettings.pmProducts.pmScheduledProducts.pmScreenshotLinks.pmScreenshots.pmSecrets.pmTestSuiteSettings.pmTestSuites.pmUsers.pmWorkerProperties.pmWorkers.pmResultSetAssets.pmBugs.pmDeveloperSessions.pmJobSettings.pmJobs.pmNeedles.pmUsers.pmScript.pmServerSideDataTable.pmSetup.pmTaskAssetDownload.pmLimit.pmIsoSchedule.pmJobLimit.pmNeedleDelete.pmSave.pmScan.pmScreenshotScan.pmUtils.pmWebAPIWebAPI.pmAssetPipe.pmAuthFake.pmOpenID.pmiChain.pmCommandgrugru.pmlist.pmrun.pmControllerAPIV1V1.pmAsset.pmBug.pmCommand.pmComment.pmFeature.pmIso.pmJob.pmJobGroup.pmJobTemplate.pmLocks.pmMm.pmTable.pmWorker.pmAdminAsset.pmAuditLog.pmInfluxdb.pmJobGroup.pmJobTemplate.pmMachine.pmNeedle.pmProduct.pmTable.pmTestSuite.pmUser.pmWorkers.pmApiKey.pmDeveloper.pmFile.pmLiveViewHandler.pmMain.pmRunning.pmSession.pmStep.pmTest.pmDescription.pmGruJob.pmPluginAMQP.pmAuditLog.pmCSRF.pmFedmsg.pmGru.pmHashedParams.pmHelpers.pmMemoryLimit.pmREST.pmYAMLRenderer.pmWebSocketsWebSockets.pmClient.pmControllerAPI.pmAuth.pmWorker.pmModelStatus.pmPluginHelpers.pmWorkerWorker.pmCacheCache.pmClient.pmRequestRequest.pmAsset.pmSync.pmService.pmTaskTask.pmAsset.pmSync.pmCommands.pmCommon.pmEnginesisotovideo.pmJobs.pmPool.pmdb_helpers.pmdb_profiler.pmperlcriticPerlCriticPolicyConsistentQuoteLikeWords.pmHashKeyQuotes.pmopenqafactoryscriptsharetests/usr/share//usr/share/openqa//usr/share/openqa/lib//usr/share/openqa/lib/DBIx//usr/share/openqa/lib/DBIx/Class//usr/share/openqa/lib/OpenQA//usr/share/openqa/lib/OpenQA/JobDependencies//usr/share/openqa/lib/OpenQA/Jobs//usr/share/openqa/lib/OpenQA/Parser//usr/share/openqa/lib/OpenQA/Parser/Format//usr/share/openqa/lib/OpenQA/Parser/Result//usr/share/openqa/lib/OpenQA/Parser/Result/OpenQA//usr/share/openqa/lib/OpenQA/Resource//usr/share/openqa/lib/OpenQA/Scheduler//usr/share/openqa/lib/OpenQA/Schema//usr/share/openqa/lib/OpenQA/Schema/Result//usr/share/openqa/lib/OpenQA/Schema/ResultSet//usr/share/openqa/lib/OpenQA/Task//usr/share/openqa/lib/OpenQA/Task/Asset//usr/share/openqa/lib/OpenQA/Task/Iso//usr/share/openqa/lib/OpenQA/Task/Job//usr/share/openqa/lib/OpenQA/Task/Needle//usr/share/openqa/lib/OpenQA/Task/Screenshot//usr/share/openqa/lib/OpenQA/WebAPI//usr/share/openqa/lib/OpenQA/WebAPI/Auth//usr/share/openqa/lib/OpenQA/WebAPI/Command//usr/share/openqa/lib/OpenQA/WebAPI/Command/gru//usr/share/openqa/lib/OpenQA/WebAPI/Controller//usr/share/openqa/lib/OpenQA/WebAPI/Controller/API//usr/share/openqa/lib/OpenQA/WebAPI/Controller/API/V1//usr/share/openqa/lib/OpenQA/WebAPI/Controller/Admin//usr/share/openqa/lib/OpenQA/WebAPI/Plugin//usr/share/openqa/lib/OpenQA/WebSockets//usr/share/openqa/lib/OpenQA/WebSockets/Controller//usr/share/openqa/lib/OpenQA/WebSockets/Model//usr/share/openqa/lib/OpenQA/WebSockets/Plugin//usr/share/openqa/lib/OpenQA/Worker//usr/share/openqa/lib/OpenQA/Worker/Cache//usr/share/openqa/lib/OpenQA/Worker/Cache/Request//usr/share/openqa/lib/OpenQA/Worker/Cache/Task//usr/share/openqa/lib/OpenQA/Worker/Engines//usr/share/openqa/lib/perlcritic//usr/share/openqa/lib/perlcritic/Perl//usr/share/openqa/lib/perlcritic/Perl/Critic//usr/share/openqa/lib/perlcritic/Perl/Critic/Policy//var/lib//var/lib/openqa/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Leap:15.1/standard/2574c10d05737eb61dde5a2fcd6b2e0a-openQAcpioxz5noarch-suse-linuxdirectoryPerl5 module source text  !"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~PPPPPPP P P P P PPPPPPPPPPPPP PPPPPPP!P"P#P$P%P&P'P(P)P*P+PP,P-P.P/P0P1P2P3P4P5P6P7P8P9P:P;PP?P@PAPBPCPDPEPFPGPHPIPJPKPLPMPNPOPPPQPRPSPTPUPVPWPXPYPZP[P\P]P^P_P`PaPbPcPdPePfPgPhPiPjPkPlPmPnPoPpPqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPep utf-8608671e5a33997dda924e2c8d4f3746f4b4b54d803e0f9871546b816ced705d6?7zXZ !t/e] crt:bLL ^l@#QIwCoǷgAs:)P쌧xeOȀ!r!HL fGZ'rJBfDD܇ ?ct-Y.Җ/XQ6a D,Pp`c;O9s>q놥GQҠ{,KY@KzeS`u^b#y/T[?;RZȺQ7 C󚩾@slA}ijхWM;Qn+XeŲS)dWYʤX4?+kIe&EeCbPנ^{mj,N޵كW(ߌ:DPx>b׳t|Wx xR˔ ԑێ_- Q6O0 +J`&f ]|Gv%v}cS$R{m?)kX%NeT? utnŨdG&4{4D*kQסDv]Z*JD t2]0%EӊsXA!ת,! 8Yf A'"jH&_ILySt%gʠ0 >w +C8}N aHarr li7,48ǙatJ;WQ52e7@ҏ/'2r5ίޣtTe[\f`qmn3 '_xZŋK#ɁAV[ %VQwn,ScDWw5QQ~}$ :'J!77BkAdɉ]ɗswɔXa`՛a*m(j3_{1VKrr?Y| ^W&GE/=Gg_lK5Ptr2cd˷sQ:,m^Òu%27/QJ`bHV<$A߰%9*RI9`8ozG^83s9^bWpEK]w%3 &Ec\-"G F8RG]i6HVqQ6$A ƘxdS{w?ehM$N"'Ӯ`PQ߅ڊȔS:vsHm3DkQecBr&yJ=+CNUPkk0-Z~Mʴ$rS;RuWoxZۂ䶏XV֑Moٓ+ #"$  #Dhǔ0{-=g~ J|# AmKKN5SzYo0/`տ=P ^.ft>ҏQv?xAFTTq$>D0y1l+: -hgk -mkx>|p>(bV#_1kڣVxp0A`}1:\#LC7S^ *8uL2UZk6C  ӓ( \D! u>ԼK]p;RD 6flk[^Ck28n<%d+fIQ9|<_W-?+_REf͔&3=E}(Z:|.:?2aB^S>Ur?׽ǜ)PfTSSvmEpF'9ꑥ[E{TH}A0[-+s W+>e2Wr1صIIekf&6YS~v? )GvudBb T'l_/ ž $C"(̓(E, HU9/uPo|j6HLoxht@Nr] T <1ݟcULfS $J%UUƚf t mDvX鍇"/d"6Bڛ&q 'c2>[tM qb UK-Ƿ65` c8mH>9tA~aj$5_># aUz8,w(@[aBtJq.|p3n?\آ'/B}Y+ %,YOzpnZdVN>n+j落c\qɞnS9P.ʗAu-Vcs/Do<HLh1Ӑ`h͖9)-U/|?~J2T.3!THd_@[P6i^vkAwƽ?N)Y@*9buJύ[W r4be?|lFfJf|{kTώL Ϭ]t AG gJ6퀠dup|>JZ&\ntqFL5wPg7)Φl>(% UQ̧zVaњJ:M6Ia=s;kI6¦Bܶ-EVЛ8Mg#OiD,ļdA17yXeU\b8lqTpPwFܰBtf,i(٭i65C.>hؐ|2O#&d>!^AANǻdeVQ$.,}4a͆J6Q1/xuSL'MdȹA.n١떗 @BQ$wmIl?}yhN]xw$;4-)[ &GQ|((6v_MȖS4SJMX3U_@@ k71=K.2!>XAs/0<vftrMR*"4f 9.49lX sm}Zrx|A_ߏ?66Ol)s74*I{4~D>("I1j@S/?t0oӪ lI}t|`lNŸ9e)&̾8g6ƀooݯ׷P29 ;퐤m ėp3w|t# J5@M2;iDׅ-8EKᢜv֩B/BDr~`P=+ (M<=Z[)Vo& ӧ?gL⏁~[ZܪSLՁa1 X,~R 6-q:R1')3,BrBڶ -~R1a/}I\;U|8oǟp(jc&wňJ}Q6NE+`D'ո!%&ɤbB&&=7aM+ =7Ixt8ϢHPPr t}e3>*{V"PQGQ[M^%)d[Q꾚fz0uE/?Og(KAu_+8 tw="ukd[6Khc+Y=?;j~&Xt$Gժ\pyS!M a.$N ҁޑ;oFYӂchtQܲx꽯3\AH5p/heAOxk?$8,貺-EtXt};rx[ټP D#~ҷb4dR?npOeg]Θ"U~$Ci]0|l?cB#{ءOtM9KB-/Nr ;bw 47Yc”UM{]tv˫gԹvE.hݜ.Rxyb%,%iT9@VngxUgI:Q%W MK~ h˔e ɔؐmUof2\Y}LQ e#ambSCٽD?V K@RܚV_LA>Oprd/'􌫻`䡧9PpH?UhW:4M̳^JUblo0x<<=.ZGpZ?zS]î}QF}kVxRRtN?|I_ϦxoM:o1~(Tl˚]r"[4=ޤ: zQS:S",4sI%<;T 5H<^:;W/5ZO s eI_BcZ| b oqX4k>1& l+'ȝc)Nk"`d/q]EwHVc[x&xSca /Ք`Jh:lh_ثI>,I՛ܥMc/ ̬A%2elCܩk5;OLJ֟d^L/=4=봢NWb+h8>njY)|h̊[h.3n;OStIM!4$(5+$rIRU%+n1ݔBGM,b (#pXnEZFO]]}'qOc^k&4Xec6[R:}nV rɧMrBi~%E(V\')])A/["*9)7t}wZ3k9^%z`rz(h;chq>z+ϫ5:a/m<Ãc>$:m6X]VCGź0%%#"KM"Wk)FHΎMMe?އKq^Ux K('ka,Шi}rw&S\z cE> v#XJ^Q,E*gK ; _y'\A5ɒDi|pgǿ>́?|g3ڿm3x"@YN_=) YF6DmIum؈wUyx r5 7+'I=#O<[ya=5Oxnso}br`ȃ4w_ @QH('ȧ|2=ꈹ>xy< >>_sP@) },}h5}>w@ssّ+#d= *nc! j#gh5bǜ"p~hQq{kix[\@6PuGEq)h^] Fdꇅ h0ݻ6na +ƅUlJ2ʦ ݳI[kmOz/ZbThtI\i#;3V⥒q'c{>\l&?I+_v8}C0lHXf., aОXt(\z0>}™XӚqFSz[+od΃Z?RIvyB Iv/֊l΍ێrbhx?@[˶.EQ{SvuӫC1sLD/{7v!M0Рz{[*89ZL0pvO _xt{EagxO7MpЋ$WZBlB]hݻc֦x&ЌkЬOGα<N>)ga IޭVsO6QnB?Л˶)>}]3n-Kd;|Rٴ݁*ZA۹>䩹2Î?;TOC!(%02 mh Ex6\'$fB42r#w(YFѱx6YwjX9Y8=톸4 w& ӛtTȧOՕ!ʫ0Yb: qU%7PnnMlE%om9,y *_tzR>E@1 sN{+'y"ȘDULC4V` ␒'7ؗ!;{1 .;E!oD饕۱xd ?d 8NX H#PcYWߨ` \*\L;BbI}E%Proa|[Nej調zpђ4< }jE1/K _1ɷ#V^+l qaDjrU\_⪟ʨedXnAn_,}?£ݣC7vp( YGe_{߿C['{N2zL p_Bi=L%Q5Njڢ0ے:WI I7W5acvO+=x>v=H,iL+&:, PzX! n!jh: N ֊M[:4V'zz9!*3~}MT$MZI0 z)Rc8!MJ EK).9P/hj`~ǽ̑'4qxL>(O8qhݔIaW| VB7XȤ8PyIuybή4Gœ]n 8*ωN!/!k1Vä#6Hg>ض5 z¥ؙki))';'R_ʗS;/dT=vrj"%A "^/v'Rmucn{;Wg0@a'ȭt9ڸiɭ!`\Nwi8ruE?lE> YL|5Ԅ1wM V9"̗_nI0%@ "ġl 7Y]3wu87]!|l3٩]ʿNw찞*=zZ6Hxi_6k@ڠUB+ O:)`|VD`Y<F17xagoXxD&]pفPԒ4rۤ"h{Au1woCP_:X68pE }e-wr-=%Tx@ߧi9Z?a֭5415p1% Y?+Tk,MxT6&jR8Svd7x>'&cu؊;_]rތ2t,2ltRȉL NSIlvc?׎P`dr`NʻxSJ}2l8vZVHqp`2j׆6Βsl|wϤE!]n7flTy.3(N;j&iPO0mMz|xUxr 퉈/`)6 P܂pv=EO~Yf ^Lԍl(jw7bvo}Q Rw՜0VH,\ e8]A`0o!m`%# T,\HY7O]X4[@ F چqk 0LV Vk{Mj$Tm)Y)flu@dλ[H5 `/ŋFD5hc|U9i1ygE񬹧JՈY/]P 2Pnp(&m ey"Pq4q-mwIĩek=-Ax U8w"CAn$S74'cӚv#ɮ=HS^2HW F#6?ʑ uܼ!8SSH3DdnbɫqZBW"t㙹%.%kͽb<@61EHY5"} K}1 ~ 'bpcjK&Ltt?ܘ”tj]f+l "O*$ђ:|30tsP9ʄ@u[.QK(nlKx jbrxKO2T͂*YWxA5h9&(Ԭ I LE(6:*D xЭu3_}h$h3D/'Zh@ܦ_W(E0((-i`&מ0fK߿:@Kg@[NtRT73dtT#ju;dg!T_tlyb| [oE~N5.3 u{tNN*\PBGHF<=Wi7[)_z9_Qf쇖|P_]:f 2#_jf,NDٳ1n&ut-/c1DڪMki}9$Yej܅Bgv[0Ǖ^*uilɣ9*I};k ,,uՊkducZ6B=g%)j}rOv&=ٝ)<1;ZPM*PIZjMC:9O9=N0Y^3JdFYtФ|Zid-+fd=$:ԏWc|4:0_ʳ0N8Fm&&@SI7PKXq%˭{나{gy(B/^eQ⿑ZȅQ+qɟ*LhQ9zBq.ǸR*R+ϓ'?B<@Z"qU]WU\ˇ3uP*9j-S[UhYa=PL׏.K?|xP+˱vŰgq o8-VqEFI6+  KG֩Р̓Yu&. i4͕ogzVH־X# w?XAIY d,̶e4ވmUX9@&A%_mBpXvcy?:zy((R@SM8VmDNBU|eTmS85+#(z9McSi٧@_#w < _+-䊌VN$[# &[ &>&Q&$kip b VBdQ8!%?{ą?j , kyzשZ.Uۛ.=brE(\?s^Cǭ\ܦU=UXwQq1Hޕ4ʩGZJ)Ӄ8_|/^(:wl=A#EG](2Ma]}ƏL[wQ# 4pPQlғ+ޏā4LAu?RaKDICm3Xd3 )RYrXF)X1d*_ᶑH\Ŗ!@g 5~l^6EƖ_o?R3R oOtӀa|dvWbˑׇ%8%;Gݘ1,;Y+Xb~UR̓n#TGHީ_v89RFKWsqÖDo0`{ N+v9ڈFSTG} vQyfPz5^('XnK*dKtm|Edd"M롕Oy:5MU%Oy'Gcq;^-pay(׀xHH(C6̲~ 7_?JaDx[=p}E˙oqaA"{~r{'c # {H-0OK1|ټGu%jajKh@[N* G TT^8$Fk5aгdr6B--N>BȈΐKjXe:*C Jr{nZdZ'趤g_æi1Հ^ 'v~WQpiĠS`6өp(@6yAWUq^(j{̉$菐 {Kdh@x-t< w&M-C 'T;6cC'qPV)S̵ldʐO!wW=cZLСB}5!xGoXDeD\|{ ~H>j7S>?B L'Oku*?qK`\elmE^]kRGFj?(ŨsEVnq*E`ۅh%l}T%Id B8gÀrcktv𜯞fAQ|Oga sN!ifI\Om?a*4AsP[6'v7ޱir@P),Oꇌ߻y+k3vX1AY;ڤQڥ ;Ou,g^'? mhѕ|HÈWoS2gJ{>_uz57hf@rX@$өY7'uI+Y-jb1kfFW]jK5fμNIZ1~0/{LBFRV8퐪`;?7l,(c<;ЏFCHȀ~Y!#B8$R6zfɀ @$kGPx6C p V7JId5'D!geAbEqlr$=~ÃSMQ`N v_E+d(3Z"Km*2Vr Kt^62 m(W؜ #$)vK#Tc\J DJhA[wBa圛((7d76uѝ 0ι#(p4fy{tcHe7@ivԷIù&ݐa&(kZg\ oПs  )$lHEQT˝g _IW| ^Bpt:@W-e*YTtAڴ6%QvD…n |bNYz-б$_A~Mpt"M⛎qHskA}VGattn#Sw)z7E{{aEҷ(4HYX% cq7)7V1Q"vywL s2y{>I(JѪҲVn}͢更p(ekxN~;QmʏE$Wpl%xh̳:w=ۏxPtqMV:s s:0IjkD/\@QB8ۋ gp-FSJF%Ipr /jQEިpI;ى]ܴ\ɑ >Qb% r|zHKzM/j~Ã:&C-CrOCa$=*򘱔0cu?=ȶ[4RO-ؙX X7KEY?Mu;ɟ:4vE 2@$-j:uE|V ͙̟*h7-Љ%쏳e+ X.w1aUx$~As\ی,0w !9m1T4lZӒ]?U @?:,-`K hCEOqsz~2'z:?H/i?k2T]4 ܏`pDRՋpHu-߇ !Ævp 3nP1 I#Qr xL &h~o޶J3Ơx>%{6^AJ~H?2o'aBƷta aډ݂ڹ^dc5iz]"4X$ Ҷbyw?|N|~c\'^$\*(^諔 +lT 'W?M0@ -)e^qYIqI1ch³;EX会j̀‹$.j/3{.td`$l+wZ=~ 80A%X"=rkK-z3%#Y,9< oe#r@L ;h럌L|ĚQʪ bR\ G@fwFu1ܬR_UE>|7] kLM -|t yc5uKܐX3&r-JqQ* 0;r @dy:*M1J $ dž "͉}r0q@gJO=+M+E\@*(68+fp8%&ASt}eD\j€xS+跹#k1CN~ZKL![u8Ǧj!¿鱓]h$ݿXZgJH"%42 xFmgӻ T!VU-E9POE+1J],UVNJO[Md6ٴ޴Mʑ4̝,FKB `,:yhhSk#:`L R7 }.X0 Hd `W\؝ ¾26$ozP %HcE fE'HDqbt)'80FZmŪ},kwgNߩڽ~x} FݖE9 Tebd1ՈwŠ&o]Y<7OA`N-!)z"ҋՒ- 7 k޴w/Rf&fTh1̸Qs\?%|7TqhczR_/jQYҤ-@ׅZvo_* z8DG1??'D?Nu8@h8he任a",yr,蹀g|0 ;WVb>$9Z46jͯ'˯\2|)ZȝJT]9u~=`'B5a 9{K֮NEQ(unu3P:S ,DR^gdި3{G] i8.LMKu=Li4p\Z/̣ `=&R$+ 5 OV+gj7H >=:XA.zڿ|ta­`m݆v=/_^eb&rK boEwFo? E ljxNO'DlV^dt*h6lP^}.]&]Of-i [DͲc]nZa:a9tEp ^,W`TfGĨAbdb<-|;]'{ z(z+>UUu~#_H$S[I;`4.b:Wytm2v`2#Ov#+lF"͵6jxO3YzύeEQij3\v4>tbj[&)PzH䵵iR6z-B$qf-(}e)Ê où P\5/В@V1,pbCMN)!\768W_[7p!q~"X!_^ZsjlN'G75[LArMg{0PL:^uٛ kKbO#;̓D (-0e6|}?́QH.44"(ROs. ̓gO= z)^aח1ewқ7wnPܮJ ]- w$]ňuvlR !DY~1*#<* *'U:XB'b #Sdң;{] |R[ =Ax#rxAT`bkSωZm3H#v)6j=ڙ5Vgɖן+^Vk]MJ!&Bv gi;T&≋tlܨq[4xVICBp ۀ]p_ ƈE!a(:{Zob.u'/9zP:po4c+$* ѳ/lm9idQKrl:O@&]-eb{^bw#>ݘ@,V0YZP试<l[`xAWA7=\&]y" tT aC,?"OJ/NUڇF/Rw萨RMad7[&+{J jy! qb)4K6[\%KhmI@OP4Y_2h#͑`1HFK >7k-SsCh{s+hx3Q".XQnk8̣]c ֞d+,zg0DG<"f'VX۞_HO9/ޓ;^J5Ο+9!\7 .]' 2j{r M.9\24JhB'1$#QرF3Uy-wƿijCXg3g&.z1E6:---߬)xSgS$c+h Bu7 YM+# & ,ߛkU1womΛ"b(/%Zx^<`B">_)3 k(m~b7ś&%A@=eoh],'޻{ a:kΫxuQ( :IJMb$3aJ  (}E)D_G %NG-"A$j䢔ЮVpDʴMp0MfW<l?"Qu:L;|@]RbR!f.ӵftj9o/V)U` {q2d‘M;I|?p}xg+ylCi }*;-33os>^:K*5ڇLeOQl-[*ZU Kâ&>'kXu y+Get|z [g5?Qb,I_C4m(!ӌ{Js"ضIٔ>}dQ:>kãS44XTeRW,$\Þ&4*8+0,HjBMabRx=J|aVU<#]W"WN?̧ HX:0[,bD9@үԬhϋ]<+vd7ꀳ$Ϩgf;-n%/  KPόd\|De*St8OZ(A;b5xSj빧V1EٌW#;.{n׺iA10"]H뢊iDa~Vvd`[q]qNt'=,E@Ny*{\ ɐ~̵\uoxfmlF D@89_`>5`^9P+O{%ogo\NTy $*%=B  KϔU.q|5ǀya*>ͥش+~J %\@7WH1!΁GZeE΁/f+S0cÔRCOq("P\lat'3 ^9A˼hEfLk mQE. ʳ_5! (VD p+d 0G98–[i9=;&(S("m~t'ȍXhG(3l/\LpŘ0 eP|e H,#@)CݪDJrqԒJ6"ճV4 vy'l{1 rkbfPqTft1;!ȹZn޽,@M Ht` ^ߚ&=s$![SOf >pg/ddC[)bE3]=Lltt)M?YNT`1WN3[WisJZdA-|25&I= R mP[CQ z#>z,KLc(JQDFꆤp+&L[ʠ/m bш?ʝfN=b>|E|;ӫ(7[Yy_IY'vdawŬX7J+צ!R*:ۇ,.]YxUg"{*_/#;d1e9ϓ"vGN2)Ϩ}|٘)Bz1,~F~׸D 8xYހ{#p,B)S*\8sIxKwV9 ,f|:"5 YeTd4y?@tu$oQ'Vğ켐'm}.>bſKif;t4ؤx_;iH6_))6Mߒ-ig |AsM!y̠ @QZH@ @uL-, _ໜl^'QUl7/J{z ~sH~*HdTC/̲a9s&qa3bKɨ5!$d:kS +ItZB*K`OB֔]UV EeLJ af~ Wt^=$QZxot`$bK,y0\y藙d <S:FSxDc0 G!d*9ɌApIFXu*8QSCL+=νPWi8!:xmuX74$E5G1?tx6s?'=+XHQ{W|;l 4)@X|S{>aDk6~NIN-I96qdk2;v:{M[@O>oJ3K|uDLkö|gr؞X.@Qe??`gټQF_$|2筯7RFo9!.i$i=]3jK\`Q̉ɺn6}F>W^UGlh̓oo(xn%*64z sL5 A/ɜ~f[x<-UǓG{ah-(V;f` ᕜ~hwjջ.ғ-I3,9deU-hyC͉4vg9.'} 6Ӧ>Kr29 뉓MR~:Yr`u'JE#8~{} 0ѯ{し扡{Ƌ#"BV\T /ʕj(9]mו>5abXc!t \LXԆμy'X*X(3J(tIbh<-oְ 푨ϓ[fdƵ.HؿQӭKSƋjV\+BX/d)S=3?Frа ]-!p]mpg/DWfQ8IIāi SDȄg:|׻yL`Q|rƳ}?|cxRƖ Md^.2 tI3-ϳAPAH''"fHK:w}Ut%pw^l' q huM(w|FoZLPlB d_ bzk=qz+ s |m;8Qd|{uIg~qJ*, kщ}ϊqdmԂy;14-;!gzա,llkݔ*$ިd@?1ѥgza|^:.@5Oԧ{=t'\cP%n-ZQ3l" mM]s{C!W\WLd:L>.o=>.㓺^w"!&U[Ytn#:6bdTm-x #ς$BQIuo, +[̦̹PZ俐Hq]cԹ ^S/M_w)7Ay'ߺSD@n(1%Ku8(#Drr-z mmNs"Z(*Q9NE/֕uT@XݟE],2l]Ϯlr)PG^M\rטUdu|g@x q(~\^ЊC.`4iˁbHKdy[h|Q<~> *-Y5r T+f Yq6wyǍ}Uc}Op>sDV;x`*P9[`˕$۱_|/9m*$ew'qLg \ ɽ cVLƞVQ/lj754 WU` Mv"ha/ K fl9>K8C7mT#{#{8%6QBrEUhO)g'^}Q"_ćPZ0f6< AN hd-W>:\O<从r,yLlB={Tjʜh:NrF7ϧ'6z) :}Xgs-6fִJ?ݷ"bAN//u"62 ÀJꜮ|3ËJGew"djMf ZFa_ARZj0Fuxn7Uq_ "4rh͢3\DVncvE1Տ>gIGNKI{=F Tѣ C}ged/)osmm/x?wy@I˲9;:59=:$/ x1^veK{ `hox z.ލ2F"s|##C݄M8^*z]IkWLIG1uFl˃S׌_hFx&Cl,(pG`IC_nJtWDQpaE8!i Ә1#ƛơc Fkdq#1H1ˮזK'颇ۄVj}q)͊lno&.mRӹ_m(i[v%B,v+Zt B9pM}` 0R$لY9ww)f1 dzKgK.ÜVbwҲISRL/ux v0"խgP}9͂ YRMv?~#qs~ZD$z+d86N A2x 1sAώ|yѲl2>[zsEjY8M=έZ6Au5 lޜF%0Sr`B$r_[XeDkum>[핏x,^[spC7MzR"4#1L /K8{.DeSIC 팽t59UIsk]㿡nGcEH(&O`=D7+%/#XЉ{+tbQ8CD钕w chP"DeLn3{+n3 ŒY y Ma@Gseӻ ?}n:^y@;HF&ɫG 7p Ԥ;]b>aҷ';A<qUpJ _T>bL\)I*aa"1f;yc M1,0_( bD.i_L3p@ޟY2p(>&|~Cr/; 1 ʆwV׮zeglH%t)(q!^o^;Xg&6\1!+&5?vu'zōJ/mEI=Z®VFH mIACtGmR$Pkc DBY"&[ d0ċ/‹'h`JG%r] ?d\UU!!l<kH719E$%tuR[5vI2 |p24)ss&%X`)Tߵxk:m.{`@+!o7v[IeLoݕewU10tZG'^IJNԊ?:h`S  Mފ sckw茽,`߷\/WJEӤ2v L3VkУ$B-TfV@ :toDm쾱 Dcl}$}O/s+DB5LNFW=  7 ރUSI[C~l|ʃ䘼а$;ژCVe/ǘ?>VaE&G tq]"@e}˙taw^^G stT+;Xe[#Ŀ!UEg)Ĝ &|Bs\~,u 2aZ8Z֫5g2wPО %f\jL]M&w%-̉fp1R=|K$OYG:NRb,l:BDU )r8`ō|Æ>I;'@ ھc[.?5P p?4ty4.׆\,E9Z!51WgΠe6z<lQHmɡ+.W$xʶp-aB h$Վ(nf-s5>k"f2mɄůuV@ cE3=N`ſZYh cG 샹 v&AUp4h%4 W OSP1}Q kJ4LׇE\٥[ߡrt' I8J8ݲl;A:?X%|xTa$h<(һO@u*=mKd 1JPfxs}4YPl9Vqyl >W۬GNm}{-yW HssF6/4$e&gqIQ?ö/d`'`;=76.q-RŦ8sU-fJkt`^,}N١#YziCe"^xC_4:6?)e^"de|"Z`L F {X7$ӤXa!Z)hnJ ߺ5"F 3wPVC%Dz *&(Փp7,c1!ڛHLVT *m 2ff<"@ih.tdLߌ^dqgh#{A [M QZ0* 1 ;^>;ee?%6gr՞R;zt8,{JQg*?l;U'eʡ,}+r[IHъ.PET;;jr<[gii9"Bd6!}<,=ڕ,!j99Q1>PVpB͇A@̥C[E Oo|N&C :uh]I/0AUC [I[nekJE{9Jᤦuݤ 7r?cI˝I<<L|B+U#i74T2IT*22? 6|ہ֯vD/tn{D՟89&,%H4RvF| Nix%; rnҙ:DOP|َImϼv!= t-akqQN[dKˆ`rC}K+>FcSU u~jQ! sݓ8xoc|X*_ecAS8 Z(oZSL<)&>v$ytN Hm&{gӴ)Lw0QG7mA -*H+Cm J2aer *C/ @ t*D>'qDP .aD-0@V(GTغ X_ʴrAg8D݄ROqqFS`ii 3CeÉi.2ney[ܜEk\fxX o#xkL|\o|7J#͟LubPBkƴOE{s&Y Iv%JHȀ` Cs*#Z#:{e0r],)P ª՘X~vW-Da*D:H,? kjT|jV^i4 KA4+<`RHM89Ո 8Zi(/`Iꀫ hۭp@-Y% uLAzȓ,#\IKDP1;:,tfn ) #9bnV{"zmpO73_o&*I7G݉9skt*,:8L,8B&RLǽ9 v=ڠYu;7:7]wN}5\i'}BmTw%3Wi/:"w|s=u] ;0R&amWL>\kݣp-mwm h2ޖ7?xH)S kR>Fq)L$eE\zQB(5lSX xw/ LgggqK %m\Px[+d* ЪafEՋgYĄgZ޼l^q^R73۰((1 Ŗ}`UDjޮj LG[fxlYiEoZZc Ҵfq}]S_ddI8w_A N+>9ߣk!1}FG"*OX !ϗ|2abE0]W| l$S*{§5nYx;^LSOK5͂{PU땅X@vWmNtf?#R^9z&1˄OVąjּN潫9Uc=C)G|pRBy9Pň:uu!63L%Of:Y <Fʨ+ ?΀ZI]C9du $z#~?|"z-9F)>ٰlgԣ M(ʴ~ h`,D-Q&HwY{ȹ-#%CAņJy/mAf6w.S=8iӉ b[LF$5۪CV^={~G~LS*k>9@>)_7+M!𼥔yv Q1|ml&^q!o 6+mQ2U6id+>u tB#v!) L؀A?6+\T].!&cF-jq| l)QZBz/p1b(­|eq!gּ6^YԊWs?YC T234{pmxVtxF]޵s7$cj92L [wYn FIENƫds_[\}Vڊ, 8u|_RpNyPiU8QZKO09> h EZl)|ʝֽ*tqeAsVX95Li_B.j?jcD|65QuF/Ũs![.ʚ'@n[z-RῃL.lnȼvwjznWK5=noyf򀈀$-U N j{06f'0%yί̻#k6Y*kF,UT2/W ȉLm(l<1 <|mlf*X&]v#2P|2J75zLOX ZlDJrۏ-j~?˭ZLSill"a[٣KgCޟd`Xpl~Q!|.l žڢʪ >׆焾ͤaKznMk{ݎq4m# _1ҡq6$EJ҅筦>$~X4X[dz 2~&T4]d>ɶD ةlC"/ᐟ,~8q2dNDL\quXQ4C'! OvUI05D㯑`>Ø~f褯ӏ~ Ftn2reX/@Ck" Mԡo4{^| ^fb۳Ƈp O7DAs{1Ӿ6a|QzWiM{3%õV 7]ǺR()mAi֞z'\":53hnɉ##OOTN#Z{8|?Df+%Z4).mm'nN= .4rPԂϺ’jJ8  ^UeI(B=HR+>LiN?mr~HRyz1Ȑ{$ٖ)  qmѿvL%"VF~}]@ c%yfe'2Up9!mª_S8ěSڄ@w؞fNkJ* Pn, R>Wcϗ/j-iuū .Sݧ1$ӻlYfFtrD'@8٢[DJur@sn|`5¥P&0I_VP UYf6\?qfghyw9q"7WnxR@?L-K ';ИPIt\v(ݏ) .9 ަڣL3S+aT]e:QԂ 8g|`q:I' Y&[=RP*t*@J32/i0]bxa:/YK(z/הٙ 9k͐-p-Ic jëF:X=SQ^2:B";W}4":P> }]-%1ƬomBCGj}"&6/.RzQAZŭ[(&a\K,Ƈ<DT0We^V)RoK)6Ѳ!AMK N=*:#xi;ș=Q9%W*>.έA{m"7WṢ2D;OeĬ+*NL.CZaëurҺB߅/Zn݅/2]Ny|$GTPO'9h9_ဪ`UhG|<0`#<8rꔤ.:5[|piM(ձ DtU̅NC+̇U5l(zQV@E~i _іIý:RBX>0gk[p7g݈ /Nʹ̊#(ŴުsꘊXQK5 -"B> ͕[E.62H$-gS8xse0`B,\|xf' q_ ߘ[b?MA\ͰXg堚=V@ȕnI pLs{bJ-fDnZդԅI;G)!@nù"̫|[hYq` c1cP  m0x%yf $pG"{X=b,Dp#Wˎ1bA7| !NK&_}M//$2eҢ 4?]pz7꼕D,m)0'ЯA6dT7U8򯼻K4Rkٰay;Zΰ#)$4MaRt9~3Pxf tDKW"wJ玴?!%XPg|EF(PR?ےDb6 -g&p9dm^;U$ٽ۾r¼1JͺhW(bÊͶyr#[y] ium$X> Q`퍰 }kn=vֲ,i9Wg} 4G)1Z{aDJ$$VmER0jjlNFgjӌJfw77ވF<_ k݋!myl^$=VԝMJU TLq*Xv eo{@q%[r1)+G'֬5grxuزxsL氆} +1 ah4z5x$j4vh$JcPXZHk!6-~%N' UvҝteG![9!4$ww}>[G̠;A!n2gcchL/Lۖ<4OT|6-?d7 i'}g4;(w"9 tCiGvwr xqβ#H*pج>1Caw)o㎧~*[% )`8TBhm-59c' 拹F=ۦ**u/zZ jNQ}caN g3xaEΥ}wy׀,xF _QO[ׅ :a?oKr}4ގYT,2|?fA-rV9 Y ҵ|$;Bѓ Z7r KO _!_+QXUFbY8N0OVeo}W}^IE[_sNrYOض*E UI|Sw7_ ^it,"Kuli|uDi"Ո2UJC m|ت?nsLmw_Hz&s柅/ \g7v ~eB5KJu>S*ĊjhkLK0="7TUҶ` VPlNOȾNM\UAyl{CYp4:o"d,V|5-ܕeߖ8f+/9'ސ3>|мhPw3~:KGIO̴Tͦ!5dNPR%om4h=' w~T)srPO(8 O&=ʮ(ü*I?:RqWJy>܈16PNZS>Gʃ&d]GžaBgd `]f?|n'\Cуsm49s\q'g JewjbvȄEYU1F.NP;23 h@IX%5fI^ JSqDmQU\(#z[rk(m*U#>l3"9tGUNB]9 ݖ 3KfZCP.gN<iK@1B,)6O,6Aa߉?)\TLg5p:|K'%8{)wp.Eq6C=rG$zX0I+"\f̂ؼMk8;7$G8z@.3k_VimGK w8#$2HGғ4S4&)4!l Yڊ#Qc@™ia=|Rc6eK1SВ GWo2'@2PP/W,q++/^i&4I@_1Ibdټ_^SVO]PN\6zSj}䁴KRBZtK=B8QKu;L2?/Q\9uVZ=K&\>̮BSX]XuOjEg7 * Q\ܻ!q 5?)Hy_Ћɡ"m.jE(NG<oƻ,*Q^F9Jr_FbgLT6Sr%82AO`Y5RD&u$KRmډgaɎ U3n:KFڶ{cJ^4cu&'b gp엸Tk +3fq[]hNLIjĦJ޾iGG# 80"G"ӑÀHr4RTQ>W_<ϖӬG4c1yp[ͳ/݄#KFKB[wS*/=zeH)<+ &A)#3Z!! }t D:or]M йCa>*Kz+EŦ[J. n:1>o- YJ@`5͒O n łO&!9uIOyb`pZ,~FWJ_|&8ДV85M;īN/aVDž( Y\?-rM $/9+ȎSb)' ɨ2}Z1uOљt*KB( T l釼9l*UW@y mQxH4DR̮oor@ ~q^0d)=Rw}0}2u+[NI1X`.?dZ}6QEM }XB^a8! .N bO/X47԰ [Hu=&%dpP-2q[~" g!rfZyo<2c?t. vKǁف[0~}aJX Iֶ6A%cnAM?w{v3NIPHѷ*KϭIMլƾn6INdɽ̢Ӫȧec8݊~lѤ?@7~żV8ld+%J@o^?z5Iv66'6J ct?Eϫ'T,o1d,#T)JDR/{d_l`ee #Om^C\u"GZw".<&dSIrUgUbsh=֚a?۾ +r#SUi1HMs+ܫmIna N殬~NrqTꇤ2 t^~D cO r=3<{eN`jW2^hc6BMv_ Qĺ\!3ӥpnG $$ ȅhZkl+'!11NU\cӧiq%l(MRJs?ΥZ`WYqZ ]4|GytabN V9En: `o' : 0;yȻY7{Lt~PTPY2864Oꫮ5A@r0SO:IaCA4k%ɟ=_ 8wS Pxu.>_FzbA#΄YE jhs8v!:3sr/xvQ d7讐uC';d '$T{&=>;5}oP3|R+"VPYS ,|ɖ|^j'DE>gs(NFRBXߓS>` ǑhnNt'Z;ڟv G[Un1B8(Y_CR]*ա.ğYl׻|K^ rŇH:|W ^\TCU5YU%f2u"^l*Zޘ#0g35dR5; >Jf9ө sF Nf jƞ]A߿kOqpzDф<" :kƈ_htY 2B~e!GZDxqKw3 @_?k#6r}A*GbDR4,45hzu/'x^(q,_򅁾hk+v?O i+(I!;R'}'QLu.m2~.wR>oM`jn6>0L0oPsX #:~t^Z }Klb,歁*_ $ ض52A}c`p ;"Qw,t ڱ'2,%brg%0kxX&#"w&T }*_oOŌi^5Hu+jņzg1 YCA#NX^vgÌ4owL&tp6=}vRŵqgQyB3L:K ˣ"xED֋n k 0 *{AϩazQ @udzh: g2N!G!WYY` koOW']rmv=ֻPD qvO;>"FSi!!tk`܋7dkv2Ji *t:S:?i^n{5@|TsBّ#?[JB0?C>Jg̔2'j \v܂Er\fqF4哦ZOC_0&kAL]%2lZl8%}aD|d,;v9qt6ϊ3y,' U/DVZg^oY$רɼa;uGRv>ɖ oуN ";j!ٱQZSgƞ@b 3T_e/}';Z,IkخIhn07j#L\_eӛ{YNΩ9p nR>BcFx)/]7"?˫ۙ=x dx@f9 !tl$e 3Pt̃а!1E m}-`4%mxm hJ^LtX_e-,`Ҫ0GE] xq2 8W >,iR-(1嬄3 Ү [b}@P1AXbww؏}dBmZVm$O:Wd NZOj5#@*9=漒+N%m1ڬ+jY&G S) *%.v5$,iߎZXG(4,ω1Νw\@b#ā""bA d1=۹3LJ5,gTZӛLzK)N.p\h✃5ŪcϲmFZ.[0? fҪ{K?Dis"Eu>ۖj8w.rk%֙;nfNB z=hW_L ޹F6 K@KǮGUM;n: rE}w/':C$qnmVO58x,leb _L0T fGِ)ԷI<Ԓ\{&#Zmd[Go$ *Lϫ E5¨L>5!%9( ~ZDKQ)](ДjInr"xWf+ :Ô>O<9ޕu\Tev~¤Cؘ5Oល^pcbE|nl.*pۛ6ʋ!gaXrT߮\׶z=%8n{n'7WFt %ⷸ֡ rײA让K_&Iv,9"\62-u7e7QJJk"t笠q#}hy g,LUdlZ7J:VY ݔ9>rq@Dž -ci~K]~R&\, $W[jM_Vc$aKY w'{~n6 L1 #{o{݅ bcA}pśM~|)&ȓhs,bE R fF_Rʙ52G+>Dal!qB d0,!Oʮi..=.<c^&M|[Ȉ2L,``B^/w2 5̹W @ei)ԳΒXId[2 >o'ո=OO"\umoO(Hk4{ U 5{^egrAqȯyAL=sރPQlxQlD: ~Q1׆h0h58}du:)A[/`$eRנj~byͮmx"NYBYI+RYjNf}^=:'Z-|ewA>AjJ- ѵ$5A {"W!Q$1YUt$,m/FvU_sak,+Ka.ju66 =,MH;2BM&DŽ@8j Z>ͽIOb?1YU:!,T:H>%jFp^e/~(.uuaxr-D٨R/b՚WsZWA?~ JsGNZ7Fuw@bu)b@.%StEe&[PKtyx.'O<@[Fcxܘ#YqO'`a{oX1;-;j-]*OdT/ܡ=0>ف؂'ݰzpG#5ʆ Z3f2]S9O(# ~JcO:|TmŚgBٚ|Q'"}:=A[q2g!E&z{N٫px?шs5v@= jEZ:5PsDHt ,HkьOvo4[,J#\:?YC('#ʫDƕLq'VevxD 1ڛ M"4Xɸ 31(X,\#0c7oo 777TzeeWcdG|!С(Z4@<#ֳ7牧^ΰ0;\-tdz]WiHmלF› F0f1DG8IYU$4mw^jCoZJ z1M>h dDֿvTͺTqM=]w;QTP}.u(>&>u'\!menvqHpWP@lت=s_v eɗha&~m=ȯɰB=wHӃtƛ]y\^c鲕+Q,SS V Hڊ)&%yWG=|*ƵB1 M}V5?BpX/SmA ,eL |4CJ QҒv|`ZKPwQG CtMe`u7ǐ⼿_9tcLqTK1&M6yho(l|LDfgWse]ՀAcG`X-ԓ%S 14A#hdbbMJn>D$ 4c: Z(t+;]ϥ"l]L{Dqo kZ-=ulJ'a4<|DZtvz[e+O3.^>Q7ւbʩ$pH^p* j H* *eXC w7! "Rgx;<]U1k빪=C9RRHW)}ﰺЭ":cjy:GK?gx߫fW0ʻVS(JR"YxRV'Nwa@=X%ۊÂ70?r쉳d. RE[+tə]J>´`ZtcDSLg HCx"uV'.:;k0+l[XQw0/bs-]w/NB%zD_2klG|KP6bݺ? gJ*bī V*zthm_b)ZK߸LRLvZldeC.fF6脓I迍? ]& `lEP34χ`r񆙸ݲͦCyH [-*ўz'ґ[ BeJGDc^3Yʗr-5Ư @/gbfCɬ ~WFVf~Ou=T-Ī㹐 4exHZ]MY7 !X`b\qƺuXrWƧmHt4C,>^R ZH"SZQ+ Z W]^G]XX=\\q>FTnTtÍZ]mV -DO^shz8:4"C;LYr! UAQ6.g ̠"̉_vEowȷIFoB[.ͨPh%XXZq?K)Vx ;;L;H澚L۠S]L$;]ztm\>-U*zHɊ 쭌S"c[M L"Heu Ki-5\_a7VUp?,Xk J l&OF!Z%jJjDZۗȇ4>(cah[P}- [k]m$0}SLG (&R$;vq o!Inב`}HtfSEHg#} cMiob0:{/jBT]ɻx\z"*dz. t]káaA|=ñpfqtW3E}܏Q!謮9]6}r`a?8̡#um&d;):yT.l`RHn ٴ# tqgKŗq`TM+k"ű;0%" DWCtcI es%rK;f*~yt7ƏNj1BQ_=NT 4{YC jPuaQaqqHI|H]-.[؜9"<MXgyZd|3SRX,'a|5w8tφ 8þ/ar$:&Ff%cA-jy:f /O[vQx}~ڄRq0&kq{.pTVL14 (uڶi j(UҒ@ _c? #>0{xj 5ثk1ZK:6s;!5>o`9t 81 L\P=Y \^9=8JǞޔr߸ڬc4B5͜5r5?=O)р)G<ցl~HO#jxp4@sA 9_2!{3ۂ"IV YF>0L-ȏl:+z\jA3 %]#k\9d 2+ 5 r۫E n8FPf |̹\_ 1@y¡-)u0P"Z3@~ 9 6%"~H6Fc +qϴlb>bt~A}Ξ-%뇷 αm(7n;/ 1lD,1Z_T㋕ܕ[ߠ%Vq>Xa+kj6bDS~8}當P`}eW8VJ*=Goa2z6|3)9n&|?0iJg,:q7Tt`}t&]tӀIE} qK(*yeoNG$Y]ebK7)?{_vp`EOIȸ`޶"z\ n)r`j&l8L(S5C`~+wM0TXlVgDȗMHj%Z&M`K.$,U&lR=8U77"v3h=C򰧓G ~ Sm-caM2*_s z6N]?{A6ꊟl;90.8E߫ Ke+~4DJ߱*%ZI,9LOޣF&i yL.e( / 59n6v`X>VߣT&*x-OGAFVeY7~ ͊_|mܷ-Mj{/vF(ǘ :&3G$)Xz$z޸0 t5_멲}e&ym_Q0Q#]&AіA8c6єO*1bV1uLR8k7O>a[U "Ԍ^ ;#5&Q E.# mgYpB^LBf^-c21b9H(G"b*X/^4Mw_\k+Um Ghb@q2>Z*ɖXZ%I`q=5CʫQkyINZ\sb!`3Z/&-$:&W9ގ]{dwdAzym*ƊlnJ6cfe1 !1jg*0:daQ!-^(p3b>66p2$G] dFqD7JwGV^qS:[v$,e7n|,sfJGyjL<kWkjK6!Ь3WH{OCDL ͰʏkjbsCm3 T%ޅ@ڰ(s\5W m\ZKVԑfB[)k9 Ptm>I@?H9DZQ#m[ڐ/RsGz[\9z@\g4 S PDg?Jfhx2 s.R"t4zs uW/ŜaaU8Nء coi ̝ FSIM`tPA@~yڸ3gUT~9`2j9ݍ#%,L\UglC2;hٰ0ic@6mBh[LIH) BTaԫE@dt*jU Z ~C=Nºa1?c ? fQ kQ4KӗDO+go#R7ntùK[e DtF1MIȌȵ_MSՒoR IiO8"sW _WsHN{jވ+b[Ҝ%rmƪ(q ة=ֆyIY² 0*i8Y&T4ȍ< qhH8vɫѠ'zhwC9Qbsؾ1EK!ѱ:[ MxV5h8a)9hlFa*e6&Z ?%2a +UJq^9w {*u3Nl 8Fv!6H4uD 䌐eUvӲ;mᔌ{W˾`|6`U+!UL t/Ls8>ZG9;)RQdɏo'{YL(ٌ)8,@$o`PN|TMϰӪG%먈1]V>M}_.JE}k׎,>w*% v&DtEAI6ׯ b}=k`f7Kū0@sTWۊ|pb"(CkGµ:5y(^X!~l@'Q\)1z#ߡnc(LR,B3M\߃߶ɜ܆dԒu)z,7KD'o^-Zhk@%^W b}u\a…5{l\ 9pEa֠hm|9#/~~R6U3+yku}/6. ^vZ0FEKX@Qv%(~I[/<\:EZ5,8 -Cpxh$ uXOf9>*!V8ɗAcЖ[H4"%,$٧`-/f 9$&)q ̃| 91b/[xI{je'%*fH\.\<,7˘\A 0`o(1ϋu4mI_e8syv0䡧uCsL':V-$e>dGwH߯CPS+o9Y#9U>9P7-afωl# N" fm&;^"Y̘ݨ@UExvOQ=TrN@"(YjvKvLd%pVP=e|ίfϵt?  @D>oL &V毖xirENo ֧NxPa0+Ue!8m :inb6fT,('o%1k H*wԉYLWG4TN:` hAMn9*Ve17;?CU+zm 4)1J}YE&n蹫q[i* kC[ 9u鯜seQIb8Ʌ: -*Bdu?Q@ K3p(Fԁ)?/@VwfnUӈ2ZPwre\(7g?qܼMkf fd۱Yv^]Q;p)g7xV{W"`.iml?}b~Z!YA`ey,')"|SD4^5S^%6ޡ ܹ@cbp!\u?H-d5p7lwJhhڀLGV< tV~}SG,z|3בAo41g=2޺FYfᆔcgun߲(Ja7ffxeni"oW-7QM: ̑Z\Cnb*ͩkIw|S;a%3RƝ_%ĝ!w)D_Ow4%g:&~tY~;RH?^2ˈNߦ4݉8⽟sbA<#ĚM4=.^so:Mt"-Gy:`(Ū"8~ˆ狮}a*4(b@@Ym9I@C OtEggX:8hTSlSϴ4(>u[f.d=ZzӸrxc&Q-l֧ĵ?Hᤁz6 cvhe 3Y&UWtI/@qrI(zY4+aC,]=7፤`xS ,5'g hXCO+_.f&Ӓ#tuϰ% A!:1v%T)Gگ ;g7C9([&6ٛ8!RpI:o h5Y( mϸAx?Z{I~=&-d %S#-aMg<ѬؓӹךTq0YP(DRͬΒ.Q:ߟ A^QZ#&kګ-D#+~rc_X=Ȳ5D_t`C)},aLL-!x=B$?HUQ\GPHbOj80 *Fؕ:׼%YGVmH`Tpof|?E (ѩjҎlLe)b8 L&BL M',5'_K*J ,辛Θ ̪o7bs"%(HI$y r?{ӚnI|8S]I( ϯ :|G 3+`B|Xi~g:]S!DԴH@؃)2 f8!AFT Uqf%?ؖ Źw aNoFvj۴Ha`m@/Vǻ_":EEyʶlQxi\:v):U .Y$5Ҝ:R$_ T01E^+{ = گK;U ޅ_ %p[LaKl|"zS3erxg oDc"A1gh㉐;}}fvBvu(֏Brs2s #.^`ppo|M\+/,'6*UW֦j*zۦ sN 6Fg_iBlvȽзI6l^T46Z<?nO YSOJAJ!^~SjcsvpZ5b΍'HYUZO`K=rMt%Ё3q41YgNrWvKI!) ׺m,€"_YvUAAdcm'Va:[#[QX6[<ĸ28BbފI7^a+1.r{ǠL%er.u>髀y )=78O{we[h9vU,NPcbT $Fyuʠߣڷx׸no8ҝUUUCNv=o@&&4+ 8v\T̓ 4AL9Cޡoի7;Bֽ61Ah|;ZD1٥ "@ڽqxv!Uˢ6zQZ&"Wߑc߫*jW|,,Gt' BːTygek B[kpiiV'bW#_H v\n}f>F?^ @J&1eQ#~XwlE\7Ef|?8"J?UDw8͞ʪ :vĶ+AJm h& s$\['CӠWjߓm( sq5uT_ٍ.IkHcT=>px2Tݗi(AE ,A>y8XOyCoc#õG۞I5$j)fG_)>zNi|:qܲ">\RYU!'[QtkG}׋#%x8Bm 4Dcɲ/dv_YEe>Zۚgt)tn'\+7>`*?A¡uϡNq EңX휷+mIy϶ Hf-n{GNET&YJɉGي`S7t5pJgoAϩ>@\}63i"0o>&<AdVOt Rk/gC"#+IXR1br"cpڬ#Tp lF{K!o1/)][`_P.WSo/<,VO28yCx0WgCFH{xGxi-v,8҅%@9~̾`G\IN .橇W{7Z/-Gm?祿FUw^@F˳Zc :(.\0mA^Sv;5"M#Ön oIa=)ZJaSm?D1h%5'3~Wu/͞5өviv璵ƌ[MnegP{ zUusKqVj`&6sLT,TQt#X}z[+] |FD9G[t90$ 8 ?8V<Ώ)zSF1^.ˁctUYm .]Ve._n)N.nʏ_M ƘOO9aQR_ta7weǫl7y#z-ló;A 5Љ:|9dq,Ap!{f~*ԘSzhn"vr$dt'Z–Ʋ͉(ΦBV&ų/  ?6Qtv/tc^Q8 'Bŷ4ϯX׽"ɻS*JHOzB H5i3~W ce3"4)LΖo`0|"iO ~sT+M]G$|bo^-kii/Tu;*G*ZtLejۿTc_)oL͐ n7Sn/T%s6x0nETx/Q(l(I4BAn>Ul^d/2clVCoJ+K~\7_vhqA¤]T/}A_xyi@~<u&_lg-cR :P&fƇkȟОnmv``?;^2ɸ'#)I@X_PEZmmo*%FtvjM%+ sGT[~o_Z$(B۰)^CQz4SA!LK"xwdN*t#WW#za]{X _- -[|qgx+M2^=d-P^reeV*AȽ72VO3G7$"둢,OwUm/gcf7N^TjK/}J]onʌ%QPbg'0L&n\+B"V#JZiy%/IO@ArqAnEH5%>X[5>Rg6puG 76DΌ XNMb^MҬQPLځ'_lFǁwChg/hThy$ }S+^y8aERrnSxUI#1Q93\gRhh8$?]ŎNߎ|B(fCCJledφJjBd:WjUvQ w8o O4WaavVH(.Õ#uL.?ā.ȤHm5Z+ܦ$T.oŤof."VucYk#ch3]'歰GT&нC=>U+ eYzBi )EdM/s9EtH)iU!^H_K-XahRLx# `iql]tx1Ѵd,$#q˩,KYa[`oJcV2;/|B@ڼX̵?LGoaumz%w'B{q6[a9khD:[,2kGƼ?g{ _iT[9kTԬRY,<<>{iKsBu:6)|D(a:ք\k(YN'eq k$ddrx~etd,wvZ?wLdw_ ڿL@WNًݖMqN4J*@uuuȢwQ"y] 6CCrB{}um2B]C ƿхKdpQ69e3Ľ`d֤RF ?(l-YDʉ/5RQ1 A>ǬO6{d+9F$K#:q [*榔AWovm|t s$p+鉏 5A[Z[`lAt e2 n{}INu* Ʃ }%/ ?C ]hGxvJIa\x}/W?PRu%:svR֘y>%N}5H"SѱZC&\kx-0lcTZ/T9:˝u \)R2Z飆YΰsnmƘXFm1/:1mfvB샩3Xw.~ x5B>*3gUcNZzFN}5k]}F c=ű3ɳ߇Ǟ1J;`q+91ʥ.7Qp 1:7acU6*% ߺR18ߚYƻ W『ڹΣ(: *~.UpBjSe>|e32VTyu@lk8M oXQJ#ߪK,d_se8Kp xEbrf-z< rrZwM8mK:z iK0 ;8Q1 S4[VR`1 XsXO[Iָ;F}IHo4s$( \g`Yt0 ˉx83Q5EZ{U_லVqg:pPIuП (|tϗ1 ffΣI?+ΛƑ9嶎OV^i_:0$ /znrlxzL 9 /&l$O%9=:{vK,K4 -:B5һxJ-(b1sԾ0JAXHh.5DyL=rN :9PDK~v7:9Z>-. 4)`j]-VNYr5u٤X羚U,TAmQ s'I.(?oR||i5%I%U%O~vsͿ z"va#FD (Lo<bd@A#Tb) Ŗ' Б^H!Af5@FMg ҉g| `2'59oPz19*fwL瞰;XQ=Č-}]o͞CC6^ʳd4 Y]!C%ج+ 6ގL,`擾om~5FXuoA_xhY-"K-~Q.gGhS)b-qry=kqxL5aӉEEdw\\໢h:MeWu-8J"r:dU%Cf,vC]wrQT6Y5/_YY'S?:^e qU2(4gv [}b@GEUu2g $i9 y3en\vj_G2w9V[L@*|疞rkg"Jް>=ב/Mc Ӭ|K` pdyYWBF> 7tܘ2R mf{]Fbƛ7/$T B,|98MRP8ږ]/ddLjo8~@;5wJz:rBW) 2R- ")@0>'=0v-? E.?cs"D6J*~0~cfX FJd\M7nM1AY:xNQ յD%XP]I.wtگ[bU<`%eM:Ko[$Jμ6lUbII$σп|]+`K,ۉxZsAS0(3e|#Ÿ]%G=օ"f1" U+((Y.y3'TMj蟙ʛKD>s:WJ[J%K RG-v=IYMe N!NJA+)Z9n/p.ݿ}z PIVS*x`wE2]uA:J Nkb;2])n̒MKhfydF͢ ^EksRPm1q"J-Йڿ] rkƞX݄H2bLY-h"=m=ul3Yq HXq+cYͅ˛0+w[=*ձ5[rV'VζpiZ@笚sO?wJ[)fFKwza뇿=̯&7^<]C-BV?[ǁCv># YD4xn`Swۿw|_@ܽ5P.S\"^߿:ē}K-+(&4m`r 1lWG*|d"=,)iHY&M^#p$럖mf[g+9)m]OI'&#ao;^w}m;rRm' "F}u^`zKjf|W0LXÀoa Kѱ ]30/]|5JֿN[fiZ"r Ĺ9}Ux5$W$A[f}no(xnEU(CBmc ѳꌲf92TJ,|R'' |%||cѿI 5 40)8Ѹ2m/-1z.X]|Bl`7r&Y’O{m+QR%p40IT umy`.0lOPOCTv ¼.r b";c}7]v`9(8*uIw=VB^rx#o~MRzO!=*6K5/BB)݇݇4D˾nSNhѠ4ĞU@v6DkV(\P#%l@eլP_[tOwVdji6?[V.<:"2*߉Ci MJ7Ga>`yv=8hG -5ј !JbJӮ E̻EbڂĨiL1%rK<-&_EJ Q+'JMbdyz ܁U N‡UQH7-J^v}&el6[5?&h;[;cEm`D ۨ>T *2F aӫ 96ȕ=Wk? ,1c:Usa}Ѐn==y@=i h=WZSl 8 u<[C:~sߨjy#u3jj٬5L׀\dM\jw2g8`C6h]j:S'$:1UR lٲ(_w9e!""|; `_G[:D)q6vl1=굏9_ fyr@nqMݼ+8e[+rIop={+S'P9-@*Yc)aDT,ݔlШSVbI.J `SKԥ d4t` 6B,nl҇ ۂrd7yu& c W;g)qs-YEK5-%BDZ6zЏJfҺPi"201n%9qqR1P=`u.>'f+V?Zr fG})݋Vt&*ĩjr![E=N]ۅq6{>prI:"sMclABAE:KX) SU58 ヷT_"p kYPNi \8sV|i{ǹp{cߝ׋E{OqINXi]6ﶱ4Xa:4A?B0Y#]/,`n;Zl40-SAyhR-ˠyX.iBj~4]6uP1S vωZY!T7arN^CO\V$=YTe|+?0NgCW8`Nio _XtĠ}dSo\Tkg4rfnE)a궮 NwgK{rL6BB<Ł+@a4ppUjLYaR_":!"&[=+[dwp頣?d*F6 :DĶ>ϫB "@i+I-h,"` C.>7*n?|Z89tICn.Uܠ2o™2MnEe++{.DM$w>Tl[h&2OXmY2𠜙Kb~k0I1ȊSkއ@ųsAm j O_dF-JI`MTe(c8hqj& jMKItG&'IFHJU"Z7k-r}&w~< E䱶H dvkGžZ8_nb@hՋ* R1ZWҨ=/Ӌ08 oK#u;4#% 8P*PScC)5 ;]qxۨ{ cH rk{-̞-eo4U[m:~i԰Ⱦj!Itjhwa 0\QadaJ7OQMi/F!֦BKo ‡/Cd$|=靄NL-{BD[f ?CQòh4zT^?*({Kr~ߕLU+,O_Rq kJqN9{K7%;7;w KGe/=I$He?3;i J_gcU[L"|b}7A[PˢD|nBzӋ0 к"fGC{IRilPzs%wծas뎀n ,u9R32YӍ 0ޔI'cϣ=a'b?Z3c6H #_`_.M%`wĀ'aq=\WM: WWQb+(@rul$ӹߤ.euE_Lg*kn} 1)88'rΞ nEUIBno;+ 7dUܚ["M989=kz(QCƝNzz0dgT m&\Ii1cNiVH 2I¸i}L'e̪:lP®[kb ̍P1I#2~z4Ka@9 cd; (ٰRCG H}@LNL nC2QS " :BNT$i}i?I iޔqhs ޅ@T4+Mv7FYؙb< YJ6L7)q"˯Q9hNK? ?Uʀ>uI q8|՝B/$eqQr>^bLvkr7=?!~hKxTYAn$O`h9Jmr__]8\ ?1ߎtl h{9);:87뛅9X@A1XTBaD;`KJ dzjnT"8DnP*c%TA,!v܈fAZy*`kC jF](~6'F(2y@Sy۳'L*&1aD1z_ VLjOg;Y4z$/՝&ݎV{E56~l/T6#e۵nN}6&7>*P7 N|;61Z7= Mk0ޣ}`GWC0'mܸ!*BƟ{W?Rt jqo]Lt}7E~j~N3%;LT3 s3.)J.^ni:XEZ$:AS_'FeH[` 2/0*ٴC#̸qS/NórO* K'9⣪R^iY*,9̇/3ڈF=yg@%j&L.Aggޥ_Z# $@Xm[~ӠAKŪHO>(,Z]X*n6̆w >jS#ХZjCIwY'LUW9/n(^{d-^7'HX^;`4q[!sҥÝ`/ LGANb*<ѩ6n5L'"Ұtaǩ',f'#Kqb5;VO.FLf $=8gHzw OXpc$5R{b%9W{uMjgΌL-Vc+lKB(BY 4_R.R4-K%(%/p[6X:VM^so8i ]ehVm t"+1y M 4[7:nDՑ60Ag+b(y685x!^x$K?룳-j%"স/8naȟ EFIQ6Sr%r6dR}$w :)nClaD74C: )퍯 >"t e!Ql!;9'-G1g 9QBBuR%X!,6NhVs՝wHNK %xw]޹V7-+A^") Ocs^ (hf FS T9&C4~Q`J\ږ@|4@zVG*ش3-9pr\BlQE4J4Sdd  M(ZRC!YEAƶ~u/:Mg A/6/WQ~8Qlr5HSX$ݱlcl+.tya4 LK-=DÛݢ\DNoi4dXH8w(l/ ( {^{G~$#L{ Ҩ+[{$`RU>a2IuY,mOptJ uer,#En-XRlKq=Ye~c_0`WXt-8+U6%ij#nU7"L6+Kb7=m> .>VɀΏ>$.y(Icq/+a:qI:[(\=q%k IO+kn= }f~&+*5L; i"JsT1o9W1YJҭ;;Zw^%;]kΰIs^Ӟ%y7ow9~yprrsǔ]wG{%}**_眖㳔F֑؈}hd:4ŧHznd:4rkeKduHJ!uxKoM)<ʢ7ΪTnˏIM~8X9!XUM^pVwuiRrCQԢ/Ub#RrGڐ<0Ό;Rx-adjB; AsA±"eta}[d86e{P4Θt]|H?.v/UvܸNE(@ ]ޗ;D~mKń@<2.P'$>_l(5*5.MdyL'2͛_ё\حb'%zQλ:Z(O8r0k@!I,F`:3 ќTf:d)YAއ]|hݤvƥ">nr4 ,@e|uwsku SU 3b(vy0<Fuf#3 %!,/uifD`x7LM,n5.YƳlQ!ɝ%pBѯꎿWZ>]UoAQѕ(A@gSPmԅ:"`%#3z w/^N%wB 6|w h"0nvz ɘHO8mhj"ۥfJQ$LjVxPS;IkĚBs|.BgIGgJVcQ+TLFf8BdĦS] r#?&*n]< -D2Ub; +,߻E8|ʛ梀g6j wJ./'+np\5 E} Z'#nf>^^0z ^E0>iN3=݆ŒkmLS3b%%&B-.UO!.&ӽ2K@ N+ yMϗ**(ql9-hvg ~(85MӣkβR6 qYE!Su3Yxܥ|ɚ7hW X򍚏G'AÒvlJ9O]n ej~intMD֦̂eeeBqg. nVp5g=`FTRD6^s$I!p V!j jr:_c*R $0CKsiCϬpg+*Qp\5Xz KK¹K2za^RZk5d_K 5K!,݇d~{$!e}^ehCA!S;04["ؕcccne0q eh DK7HՌ릅Ժ=*#UNS55!Q2nmV̹Iwb/@6`{cb i׏0FH?"Il7 A`JZ9V~5/df߀@?eF3 Jğujf'p2{3l WOYQ7lJRMgkt-~!WCw85$񿞋$2k,4E| D`f߽IKd='l)8?gl0J&IJh9VkSM^<7?D0qj$ A) V_Js\ÐL&bZXkÓ^pM*t$5fiEz\eztCپ˗ق`) p$`iZ_Ij0 /If9b JBo4n$p%?7 dgHKޞQQX)hy;+7S ABiZb&2nQĎjzɜPN+)U0srqkWW.S˜QC2OVܰh/?Pdz`*ϋ28_*CN9KU-CGoI ]|Az?Yz$h7FmCäXC3pAfӥJJ=FT Z&[TǷiHEM?V0t Fˎ*[64@tE90IȹN踳6)oy G-!5rW[{ĘV2ͅ rc n Vipȇl'H%g)S^k -Z^E;W+H ')=;'{^;DkmzL5QvjQҞ⠿gy (va5MMNE>IynlIK]sYt1 ;j.۪#"Dv:,kX9}@xDQ; ,giJ0 $z5f+1T#uֽk/^dW*mB8ދLE}dwH \5ȃ骾yNI'[Xy\UooOZg ZFUUeV##V❛oW4]VI+C>-pzK lwYG)YDiW 3aVvwG =>+ ؒ?w[,uM$HN4LLy"x؝`^ռuz|ƸBg&;ؗH@edvV3oBhY$֙#[jLwObG(нMJxpfqnI}_Z&KMl*sW͂F[k|o?ȽޫD y,0p[S=Hww7@\*!3Ŕ2j\YB|sVUC!^)Ө3l] - +@ÜuHNfBL{U ( ])|rvmUr9>g$3#Y< dG`nEv4`{ 2=Ѕ ruqW߾Tx [$i @N.KƵy5Ǻ-sz/*"sbb-b9tj7hG$'ܝQPx !3^ K n7# qkJɂUݭx@uDgGŹ!wwbc MގPkB3ֳ%{µ_ڏi)1g'h8Jx@T]=UԳHdAmf2 ̣l.# x:ЭH tW-)[3XE1N獖+ D0P?2GDKNN!$ iPd4xSx٦ HnVz^<..5Qͦ8:%qϵm-sHZ<@mPeD~ZoB^By:,W {hsI #v;ѕᖾu[?bX9i{-3p6fUEJ[jS*2f fTLAx6{ӆjH@u/Dq~#eW[J|1)0^f:* D#56}\tf{( Iozii'j$ = E< Aq췦Jr*]:}G|79ZǼ_H cgUW< zi %gNwjA.!&)P=?=&ʍ['L\l8 @eP$S1["\W}.@Y7j4P1RȧjK*$n,Hd3.^3^J(i騽 M\  ֯_6v I8t|4ojŬ4%3[:K;HB"Fa:PŤ2G9v M3L5`}DcslQ$'mi#Z0# @Fk$ՙ?8ٛ6O]2?QlC)ZCy4t:' s|iQXg8@f1 1ՂId: &}n%b#$I7:6iM`0ITr`Ajr;aN(N.`tes6ۑzԽ !ٓBm- *Xip`N>x l^N4$s iwt'+ R$_ E46g3 T]T ЍkWq nw@Ia8XnPNR\ӈ57F4b1yd80sοS:xGN"T$FHF=ju&>| w V#s_T3v r\|fe!+3eP/;$%F'H:<P5[3,/',@ĝldnAEh?#iic_q[W!JRi~Ts_IE&[-7+X=_ɻwe:T!ZlP,Pk\<:JP >ꠣ솢Xw‰o*Mөv۲c/'W:3fkӻ}.)0`QSOM<ƅH(b=8"OCDFR|pGѤ 8muwXKB (_Pf We4JRR4S<IFsCy|^k*5j \㉞~Pi"08x۬ ⯸/Gi$śkO*K@x*H~/dUŧ&OwFuHO{qщf1sBUXE}o cwiDirYGL\p&`\vrh5}y_D6NgS gXe 3ؓ՘#lMvhF8B(Qt#Ԡp($ٮ4|m#o)leZmB.Bcu6j%!;acu|ي׸1{|FCަK |u njCtHe+_1}EKdH\ _J i"1s(+ i"opĻ[J=% H)Gbjmճ&5M/d_BZNNX!t?- N<]<='ƫ&H) p\Q;GAcZ!\rR:/~/|w 7][:=qncsH*e#xց0:2RiBVJ Q} EM(\>߫|Fw 9}WpS"Fx 4ɲiQU3` $(D|͞ # |įP@؎ٸ썚 i$[mDܯnQ~'|U8ź / r}pH{hǣD]!=ϖkV#ɼwJcxHNCF߱RD%aCʳ6LxmhOh}8OZwigCDB~;wX"cA?~i= ɡ~oZ<>۫`w\LK|yPdyn_d.Dn 6N6嵻 u5~~uWw!:R@1G)c-O;(0ZS:pfD$itMH"Je69oxx1LI_ P@:(PX/isAEL @e_!+,g`M?zVh ObR,0R' S,{QDakr$AHUK8~!~* H,ݿ1y+e_t q c-FV[nG-==CEL\}[z]Ɩ@ $x(1B_?wSL\̳}ڵT!TN E=e ,t*H%Be6*fVxFz{cђ.CFX;#Bb)I!6_:{xPٺ)_zJJ8.ЮX p-<+QX*;ICi O3ܶ6O$͗RJ?OWW\AwfvX {s@|ZȺ ;^` 6+Ӫ\C跞g26M밂6euoC_o6kGp! 񾡨x}%lD&ۑIb`-ToRArhCc Es'{]-2ZV!DK|}+E BMai`@UcWP#s# U[ǝg1D>Ē (?"rbؚ^fU:5*jo? s ::>T/é/}XP80ZɓwгԭfեfK' f6{q6)vy3/=͓i$BXAAt{Z&3de3L;2՞r\Vmk*Q0a.%1!5yKx4@RcEѮaT̘)99%z*@зyP>gc۲e1)D;^+q/p"$2+IF ݀+lQar:[К+w"nOWz];Ҷ) p>+2@qNȏ8Fn 0wH @3!u }*a@orOѪo"^?.Hރ+Zk=v>цJF bTֻ̾'u\DGG_q 3kjZ%IHKB}QOU[+ Bm)ܤ9JZLo }]e]Iy(|^ʳ-ߵS! 98MVy $;x:!A[g[ް 6jV3TvBQ[X4Y@i3%hLlNUcWA.vcoC${,H`2j^¾(]?C!Rۄc3Icf6^%jsӳyyޖ'\$`OBeN*|Ös<9NvJu77<|"IhO9|Tg/_‘K7|ZO<92UM^*bͯg&a]|BY`u@"O!}Da0D.dwJ\7Xﶹ@`WqkSL ssÕ E3 ZZ*(-,_:!q/LG{$2Ȇs:O/w73f HDl-zNdbšrUHI&RQ ~f,k:\0?~v ,7؉Dެ!YsqY-˿Sɱ8pV?Br/~%O?Ώ)?PfRKW r1q:Oir㡦냷~D?Tq{DygH@%EkX8x{ &TRnn3&Mv >$Fm zWTز;y)BVCeumDy-%pyޱ 8$:H%J{ 96"d/OJuO [e<u:5D5GLI/8 4c;kצ-Wx+#5\Bbz6<}P*7B%<ؤ'\n@$!-fCфCY`E5 ;XNδ*ߪ8U6fYeswwSC;YI$rݩ:pMEa^6^ ۶,hSUJ[|P*g1nY{[Fy]t"80!GFBѓߴupB o"CE4dGmx6X݋×ϡ?1,Bܑigl|N.3 eדVӿxBBذJ8pek'@eO]Gk\}x<=}: _(=y/\+j ;r`;wyqdCO6fKD#b> (P^7{qrspg}>@+\H_ #=.KQw+p-Ev7CyT J-m9a$MY'P l`7Ee U>^?ڟ~F>F s,w稾4jzH$WܷsZ 08}YhғQ;uG~Z,#ѺqsyZ;Y ,ӑ0MϢuF/n9)כiM KK:#+d>Bq=;#QqEsE&Nf}ʧ XW Ԏ-y䅇Uac( 77cOI>2~RoC0U?Qtd9ݼI ):[NH^OQUۃ޾ ,8߳a'ead)I[/>2iGXHox9*O4!]GA*Uaq1 ל\9ξ<_k5&E'T1hr6ErD.*9`"ȄzgaJn,JI6 fW򫒴QT]:;>r uHq",v}gc?kWƦs}3 1Cc4% 4^s8d3da o`h`rt/Y/„)`WOTI{D$+= iDjF #xެۑ$oKNbnƏ 1t˧C~ʥ޻GH8bd:6D?&7Gzܯ}y˞X1Y 'j< ,{5UȜ})z WH}xwxN^s(l>Y1}Azu4 >M1X /5̼wD8$"Fұ/HU^{PL߈#""^ey|`}/a)0GR zh!Ì=)`l p:p.4nG rD a(hC38Gl d#U߲2tG3pe[C&":{ׂ+ >$;]+mߟI@ڽ &06fLUf"驚G7*/ۼi'/|xrpSD8(AҜ6פB W75Q`t-"?yP$}m."8˽G@s6m>a4R]1y+}9*V!>|:9r-maeSEUUE쉭Y׮ephG5]OR DZ9ƹdm;Xꂼljw&%g=;}!.΢ȫe"9ok2ߥ3&F5C&qE]M7c:]agX)U+]_kA qcfUi#=~j}PL=k dma~ /ik0YLo`}%R14.$l &v1ކI3qVv8QU]a7l4y8'R`D)yVf% ȝY|mZy -hq]y^l!Tg₸|(>and̮z4:bi҄0R`lC և<-!!OInxv f矖Xs=rzj5b7DGg>ŎGp\{( Da,N-MbmDMȆT 46XD,l+9kxin'nQu?); ;y$f(~GsU+A>jBQx'5n̯BHĔPUgz0j"A jk#"0Nagֶ:e!#l?ZQ!x[` DNM1JY6:2sb RXel9~$6wBeSȊ+a9QOH qbqr>wuBQYNkp᷉"@ۓۭj=ܷuI12Hѳ R;p{s kcKS~Cih \30fCV)H d>V\sl!>XVT|cZcrp>q[-2D)z'3Ȋ-nb5q6O3/]UHJhck9,ݯl~.#DS½UT 0;@ IvlOT2v{yYmºyMYp֎WaJ-j ,sVk{:36Q}4[ZN87 Vo:=q}b\sF!!,l|8斨RJ{ˎȩ.S]L m)1|>ejD|P8R_o6\ oz+:ql_#\m`OJ@yM72F򪶧6FP' ScW/\HV xk7Sy'>(U ú&OO6P`(gXODJƒ@))v24[M zKo23ZՔ(j9"D͔ƭ ڮ4p)5{\.f0%x3!DTz!``6灁{`dty WԴ|@˟ cu1B%pY8SmrĆ5:'e|_?w16bUOe_E~yGJ"i"obgl[u-^J֒e=:s=K[*OOƌF{ |=Z2<}?2znВcm֟o?z *Ճe ؠ lB-T" %} #0!I w~ "}^c4A9@}J`,mCY{q_{j a,5,]@HO2D!3r^$ I ]4/:p^a`6&l+yӮ"ҼЀx"f|+Z t.<icЅC 2cAOB{0?3s7 xl"uےXQ 7;Lb$V #-R0Xy \(TWZ-GQӃ>.Nu.UDa$ߒ^6r N4҈iq-'+9髽]?B dxDk gtBgE\VLBJR,Oj0XJӪ+c;Na2rK:ҷ {MNI)VoC= Ɩ2G{> A$ Z/mnրOsqkvŖOۼv k룂HNưCSzU׿SYF?I:Wl6>V3`K8~lJ)ťfT/@VT _֋PlMz,Q2X\.cX][]ia1z ƑU͐_;*@3SpBy9 ݀iˣ\:8W-\W}g@ )'K̶|V#Z %oܻW(;釭n:qZ_WM bfQ1gtt@ |.sQvb\l  Q .s잋45(NfҥmZ:r2Q anԸv&< P&yj-C]ɀJ'L8qhD 57 Ah/kaCEB=zX 'Z{+aO?u[5ǾXI1jNe1Uh xԵ[sf'K>Zo1G#Hf-.D29RDuZjmi#@Y*.ي~䥷D鋥U#RޛDȕ*mrP^ܟAnbjeQ.V5KYW#ƴƯ#mǭ.VAʍ+ʼn|攖"cߢ0$ON {<݂\D%LȲld˕m GH]eۓ&guVϴݟinjkqCd)OcE,X]:y*2oT{n:ODvgww4&]dN>9Fs&Pfo[Z Z\qHCf{!WRH.t4֍̾X ^QP$%ն>80&n_XFJ.<23_Eᤓ-׮+mK6nMG+d4Hk*n@ #W{$0%^־|e:OsT;/v/EJ]* sxx>2E_FO.$TũU!="Tw'>7btiJAG0.‹E 5 Bt~ΖϽmrP)0(3wڒ-6:UE;) */J㣻tluXDC.h:0T+ɺ#)>Ǒ:+#UѢ%U^_'hD܅n`o%ں1 I4u$)F5&\|?.ߢfXQ*V5O'ZǙYܘ~~Ɖ SҋR{ » Z֩#dpDqbu02}R:dΏegVRRdG!';[8COّܑb%S:e/ <ޝ=ldz3@[~J7̦G-tt7]* RJf#x\ӌ]b0rҀ}j*{E,dJ_} 2:-2 e1r׷`DԉS:>!ѯGa/=$'cNuu( Fɤd*q{g&vi~N=UaVߋe*6 (gl'ő]ʔhpH4&GFI՘ kx<΂0y7Yq 2Tj3Dvz&5]e7%&8v{Zj4?U'xHϜ)6zL#Gsϣ8a7{Q 7c ^e.uT54 bA'?JI3m*xrJm/"b'F&bztz̃i?~j|Kϻ|PXBD1GZ :T7)xg 9s:Q2W1?CF܎W,&I?(\͔9u/E*KTopS0E~tocr=(H Q&) % a:g&)ۢwMmÌOsӵyV*!%CkM ?JG]0+ -}/JGs<#L~S;hty/ϡ F#)=6uκ7d e{ЎP;;\YJwoߧ?1$񀶄)ph\ Ԗg6uE`Zf1%]l) $ZǺܢv *Xr3"Na}>Q>3BsEk ~>2"л%L@-e`]"{rKwK2m\e-Rjj|6d JSwQ/ ;OAX#nDd ]%- 0C\"Ivq$M ke'4L0EZ/#$H7 *Dv_MXw/g_ vl ~L8 [w@J ȡ;ʻ˝]#DQ2ՙB 8B.Õ{=_Qﲑs^3m>kKn0yg9ߌz9hULhu}SCDVz˂aޏ/F5Umna˱JDpA2~U8@wCE U#56˹b|g-D\N5 ȯ'Bveb?Vz߃he !. $ڟDyT9?ycՁxz7NFt7B6E̖!ڠ\>-P-1wq%Q2Up,/QQWXf>p9aT֏w -99[N~-)6#퇲 e|blpUUP2a .a,K¹%<.ð !K[%0SSظ"^/p*p|`7wh~v4tUNSUv =a|E2PȍFBE',5k[Ю'9IS.b)(e?Jյ5J{¸|405&停xTԁphoU8b8Y/<֐;EO3×>osdnX !AQIɮ$ °6IE\)3uDT\tQڗeyvu!j+HV5e@ ے26 C..,7*y7( R;}'?Mk\=Qŕ^0SnGWt?~S\j& B/u2.1xZq U<>aQ#J R.[q"cF,/k^i'y@#z( ~5͸Yce|n衃"vJRJbT"Il1GٜIF2 QҲ& iǾ!)!a\_2eު6`wu#MUSxT%&_E_żH]ӳK]-Zdo~$>59T$e Pq7)VxF?~۵>һ O1լpX)ٵJ/b{t.˲lv9s a—N^[`:% i"/$_Rk%"5ܒ" $̌6N:@"2u£ sA|exP'7/NAIQ3]2nB"RIɌ#F+`,p 4qY^6Ÿ;DH "51\ s#v6\iUStpx/dcڈ^ϊFok[7RuC+D~*FHF?귔fn/#GEyj1M^\uمْ斪bڊCɉ5K[._1uE=MzqQ{S:zqBU ?5}h-88L 6"nCqAm#|)l.1U LQTkMgQb/OP8fMen pAT2Mȃ{_ZܣkM+H}ie)c@ t5'HY\@ERY $C{gH *鑗dObԛd:𧘞_3"zygJ_`Vf㚔&cKKnJzb_x4?>ߩ8(.û{bUuo8 +ƠKՂMjQXwU$!ƀ:'S޴;棇A7> Lp9'<0}q޻zԻ!9I1Nip%r[z(BA@-Nk9z@.n^ #`䅝hfdFױdƢ$JFp82.lyS5,BXm VSyt,($>k(MI߿CB[e%f4}s361xҾc}_`:M&3繅R߱j Q cJTJt#VzH1j+3"Ӭt=r,"%pD zzF ;ޡ*TT`)A.VsZӹ8%[!au5 !2)PG&ܝێcN4SٍFQu9'7E+S JҠӵpsK,s?2Kx`&7UU4)OwK UH7s`^0~{vn^&_8,ՋNeM,l d67""^V1ǚief˂$( oMaUWճ%|UG] Kw _[6Qw2pbz\ HUg<})^:Nn#xvvQG>r n` {_RK]Zzd}?KOz&n>f ~WuFKMH1 뱹zduN/|d}rD@Fg ҸO*ζݛ=s/QW69^ND ##|#\v"5by [)E==jxB]YBOrKV/1 (σPɦBhŎZ3a`Gc[,\q~L܈=8,7XtLae~85h<tܻv?x>E>o- HV31&"! K leC~}3+:u3NXKhFg(؀yzG-`ktzhKmrGAN [j?;s {G.f;:j w4K`]tx0\'Kſݕ#xIsZ,2GlOZ ga4% g=fhc (H%혙6I|5 2jLWvϦ_t-j3Xha՜:M2$s"b v| {, Vzqtq f W?Sn{9dNCkI^V!Xǜef>^4q1J?˗Ε5:GL(PV3)|1O[`Nd_s$&H>{EZ؎-G^:~.B M\KCa. N??CG:1 ^=/-WR҅" {ϔ@"{AD$°g"56g;noԺ슴UV&e| bBUtow0{Sxo|)\t@ʋ )64Ru&CǦXǿ'#lì&3 *ȹ1/Wِ^rSKw~EP/9O!VȹUԶrJ,ejBBV1z{nMFf?[[p$fsDr˪Aؒw}U{KvPg74qwο$SD2H M A~Ϣ8־S4z qи ]?q>vKdu(qP X8)ݣB|=o+1^D/ە#ދ=bŗ~[voxNVh(n.iFP#Nw%>>)K>$֘}v1 ]H&\&Rn.fN>b/ N>"=kqFX%ӽZ{m\n4ne"?_"7#XsJ;H#\/2W:K-[+G; nt:ڰ\ `Ylh<)^}?kϠv >ÉNH/Gyeu:B?@ ~3߅X l멤!:E.z"@辡̻ wZ^7GsH<.8^}$chcNgjBWrv]SEUoѾune C E\;Q.-/>^;}oU3u =6ڭx`}]77FVa1b0sxmt馯! ea`jtK4o]o0zsac1 r ~&fj77@|s^i%򙊔~z'nAL aP\е'0"_$M t<3p1|>v|o":E*dr2<,+Ai)~dD /Y:G}xOU RJ|?vuK,9C<6OjUOX# %ǻDx oOǁب 'Ԭg3R(?zzy.+hgh':CpVḃoM:IfÓvs f̑"EWZ|/Py?eNR 4X*EW2'E"h ۢ 墭{W![5G@ l'[&>ǥovв547n6oC4M-1cK;$ruˈOǾ/tW2c:_GROտ_aB?\f&?oY$9>CT0۴8:zȶ1YFQOgU'λ IH9%"1֚WRǝ*_xkHLޯĕ#UJ cde*y cb7<?>j|rJ'Wt3}u#;m%4YQWeo82ٓ׭ m*}U2%$(Ԇ[G-w?PaRf-C'Jl,L74OE *]&S.b?q[BWy^5ݣA f&]iYo}ut bi] A^]q -H^O]E1s8mQVCD!n!%㊁>@(%6(S=Qn8y"SNj~A#9e #ܱlT,}F3oiD ՂUn|Æڞ[MvIX_v}%wqW-4t|sJΦ:(Gp\[&h6L~'h9xzf*Mr2~ n 6RoY^>|Mcr8ʶ[4P '&JC' #O_D i1?4&Mry`Kݒ@uù<cMdbn˲SOˠw 9?1v?Z<G߃D>ӋWħ8a^ >E1}%Gb Ǚ8;~TY{T8UC)(S:bs-_K,IuHюRk}Br, ?xO)5AD^h\zYA {JɄ4ҼR# &r^ 0 Ww`MC3CD&%El;$nx9 ϮWI7)4:7nE;Q^<2t=sM$HFIr{ɕi_{ѹb'0 F;5@3S*)g(QP>a ^>OٺWpl!׸MMQ r#XYz&Ks((:ѿR{,oa(kÀ ^HN 4([Y_47\) =vAbBM[BCC<ǑӒE}+ED(STۿ_n1lʮ$R_=$,_axDzo*g7#O0cJ^\D"meHJs}U'\u7]m + h0ZKqxR7Rs]\KY"IĹΪ/0ZHnq~1O%J"b[2u/nx(6ޒE̿=r^2iBL99B'Bl߇d ,AՆ*A@{2,591HV}׽J$/MHƩ?5H_ @諩,x3Q7G2%n1WĀVrcbs=)WGXv,mۮXmδEN^e{:I;T\~ŵ%S4qzIKp>)w:#N3.ILǷ'^  wd a_ovmYя%uF#ʌLB#8\%.ܢjNdPZ-/^ l %h\34Tea'+IYZ]099Cb wRI8e;ٌT y!/lȔVZR;z@?㝩'ʼeZvWwZTfިB—Xm Blnp"1]j? kh4ug*zVᵵCxE'n5ͥ)ә?L?A:>FQM!Kʚ60PEĜIa7Ey!%]zګTm.3Ȭ]!E :֞ 0[m9F=JO{lq?DW7EgkO`<.v}=w2%lI +gO:$zB?X癭2j+QQ>ҁGlOR`M]$ZSzT. VhAB7`8X',^Bm;]#0(}![xx4lw=Պ1,aam|#!I_ERL.,e0ԵKu\-EJ26y ϋ3E}?i+dEDI-x#QJml_MB+!mEsbybTZqq4 B^.t.D] glꭀNn}Γ#vvU/=lQGO&gd r}\;r_˗K٘鉰 Y٬,)dť C EViwY<ώX 4!Ic"O Pĵv^ Dsf%Ab&/i8d0W[F8ѻIJy+{G@fOl |MJ,5j><^Q]FD5kD9U7Z NCؐʬa|泵\@xى׍r=\WdXt:,Dqe;MZ d4*WJjtXy ֖R'X4w$V~cgPt{y1{$؂.Ihͪ﹧~xJF -T&«q)9A#hfYw$P$?J=̡nJFXEkwJHt?XmB`!ܻ߮.XyyBo<gTy# >9Ku3RjO EO>LڣЄS{*U^K9GW<"5u+*[56>I{A2VT݋3iAJ3\[lP](ZA4,|yqT1$d͓$0D@zƸBazK)9 4 NAQ@!OLIO1Vٵr2]?Qخ9Ov ֖:n;Y+ C. -5AzQ{JYgZvڿ3}j3+^!S4EVLDi z{ S1’n["+6A7Q4a3"4I~;^u-'Zi:CjО4,݊@qv2mRI x'KG^ +},0cB•f~7vA&BD ]\  մXiNp8!Jv3A96=K! z@(,fzItT_U4׋|}u) 2.ԈZHu:wо`pc<߼uR 亠W͙2coI7=cAWX.A5g'rAQxS3ʠ.֠W:Sn VOաG4HJ虴r$3-岝ȷN"Ee|>Gn~ր9k@GUgy3)vTqUN"CLh<UzOu[*~6? <N.vVr"Ci>쥹,]cIڈSc]*>+(;jĸ7ҀS*u%ũ#I,HnO  /o(-J+4P>nLvv>?'>R6@y`+(1$͒ƫj/LF"q1>1‹4rK PqJLơ*qJy˦&WJx-좢7܂fV/- =PQ/isNmyzOxj c]׫0ߖ"\}-SjVC%+;قG,'@!\IXi84{BroC!s~BF@#<1pDR.X9p+- 䘫>>OG{%TJI% q%F9$9e$UÄ_]uWZ.&je1  %ԐQ~ p4JB`%:_5H̒-Si^hAˤVrJWo#*bgW-vȑ[ҟS$" yq,1v =Mj)܌@MGמ+9'xԚ_a cF<}<} )lEiкev3I/qDù 4BaxbI>Uj|Rq巉R\YݳznBdn͵+|Ŵ L76J\|s% =*{y $grP+s!Lm|W̠R}ig[zc|߃ʁ[~ ef|[TȞ"?n&o.8֓.{1vNr8n"BUNgZGLQ2@Y!϶*j-!ak˒S.6P.2VllJ@]:~͔a}2q.P \֜ սhiC)7dkPa٢DG>۪ ^7=>S GniFx֠#%E()~XH~J&` &CtB]X <<ƺ*fpED Lӓw6tm4JM6BϠXɰ@u]g?Ghf8jDT1||pÓ3HV:hVAE?n.[%Ln?>7"~)eMS$?Yb[? mP@[".,;0 Q&} Mp_A&.KFGWE.8}!=1~` Bq^`ɰ1a9rf+Vyd|[eIx[φJND2-TV3kJc񋮃x\unBxZv.5_ `U5ESZ.V)ַ'7(<1awRN]U<Ǵ٤lO4qx[ZkTmh~r@[]fd7&M` Fƚ$Vx3:sVI#~a>,w LoIϴba'cR"Hnހ.G ΃vc~9YȀ愬пiU2O#i2گJǼ8^fT]`eM9=TvHZD{ef\K49|]&)Svu#=mIrjBAkGW]`\KOd| (tQ)(/Z6#Itim)[RXҺ怑$,ٚecPo$FpD K1ʮӘqt b u" A ùEyjka|DX4Y?/ŸpY!1ݨkl;3՟Za%I.\Ȭd:Z+۝'ETBXi_dh˛⶚X\\nGƋa@;hqN\#9X3& [1M.BBe+dG[oA\U܍tCzn/n#ܺ6]CMf(XU !U?(W{!_׫6AI8w `(1hRÎ"+b\ i2 D$2IjoU[:Dy%I)݌bll)#}+el؊Urj󯮖 T k(7{n.DtBѿi/(n F.MP{((cu??E`Q3[QTMbPX  z.tb g}v^$6w+j^հjZ-D#?<V-o:x#1KuQxK-^?G.`KE+_llLKuPrFE?#ssɿd'dAIqcvB 5=BXeO!ZS2a 9iz_΍2V?HsuX9T:-Y2H\')Kj >X6{Nℛe3\KZP.CQMB}sXoTnhWV2;=LpFv*T=_N5I3Zة)i_ҕӥHEƋC?TI}ΐqpka6cAT@'*A#[ 96,=BcL}PuXIVuf!{7.i41#)KE$D"֎.7Q|NתF~ڛj3k Q'|os61t4!gucM(RH3,w|G{$&traMOo=Ft&%]\W{.nxAqx-;0p0}hپ|.z 8lt2Y /0 H)a'1*R褀by503׈t!By|Rf]_(H"=|t}^뭟ls4жuj=Dd&IqG䭎Wg{l¢F/f++uTº8յzk7J ﱚ+u/>>wthX4D=PubedUe{gAYCƐ FD :y^cqj)f *b/LڮEyk>'!{> MW0$~2Dv. pԛ}1vY8u-Vf [ PP}:FE߶O$򻍝=æ*_Fo#(lr]d3rW}g!-1Y1ӛW%/{ *,>93X?' 0;:-6ńH~8}QfDd8sy. }ðE*tȋQ$+v3v!Ƶ S<ԑ-J`Ҋg 1r<'bcӃqP :257e2mIGNZ;7L^H=_47ϕ&:"pdc!8#Lka]͔yuzhBF7M?cG7^ ԢDFW{",,qKcCIph7 cgFY0 r&4:yHl?{Ul7&Ԉ_ikn_1'_.(epC[^L1/(OGrpE=Ibdv3Iv ×>2.=)"7 o5Vu|qM&Xeb8 ;8=Àn/9x@?ܓ. 'C [NBG#ϒc@#)st@<Sؤ_~٪@_Ĉ *ˀ(0oHB|-iDx*@,\&/ʟop x&ekS8S lel|);W"HNA/ <yXM⩭8u4fiRB#L>DƑx(I!`Epsg ;+/¨յn ;:Qb}EQ-;+DGHr0f q=Vj_fǟFG|MSe?|λ4f!uvβ0ϴLA-#f8*$LBٷr g:̪%i͞oh.1@N/rv:+@ޱ¬ (w.7B7Sa8hV; ۞MUv3 ذ EEC.=m|@e+ (Df^Qd#"PUR;7kc+ф2<[z`S)i uV~p̴,F;<jYGȄG{Dט1)r#u'nXҡO lgKB(҆-:t`l|iN vBΞJcmT$jàg"OauN=NKs«K硄?<8!~jڟX#gLyP@#ghtQ#DoVhbM9W:78l`t窹?H싐,I;\JkDo>YV4[7Dg$3N5 :%:C9IzDžk ptVs\ſlÒx~>0Cdd]/nq8ٟ kƻ5jN\%SRs1O5 ܹ$(k#!S~-4djez`6qv7-Sʆb[Ə }Vc/z&H_T2LP0^^Ƞ7f{2Qt p^HsPdz4\(g-|EwZ EO(>q*\dOjP՘Ѕ ʌ$l%5z3_iJ$X2Tۛ>jd71~Z?&BHn9\lr!3ۿU^|0J;R(n;x!=Xlvz?2q=Eܣn]ʥ?0Vq}QwmݟQ#C%,wxDF6"#A}C 3pmxTGOTxRwܚuUxI'{cCxc&o 1L`q׊IX%8kWʒdLM90o>407RGu-7ՐGJ=JoqdǠWY7瞡5/ #i^&oLhcF?;0Zft $/s> Ý(ok\e"e۔o@-n,n 0Fǘ닮훂tO~$EOdXy`P}H-BeT"bZyl?+ڃrfdTNuG [w'Zv$CpqIǎv( Ye"K6=*!d9cQl6Fi"רf(g!yiUJbĈCXӭe%Mt/S2b~@Ԟ;:;̝N-蕠aܵ_W%wؠ89)=P7ۺ:ܲmd{":|Εe'GO2Xa#0]$ޅ% |8.Yx@*P;Ր } +ymPܮ#O 2QȰ^bt/߶/F "^mAl ?ԡzIe6mpA*D׌s~Fy8I ̉3!E~/\LXµ{$7HfiB" HO)@ :r(1ŠYuE }uZb;S~U}Cqz߽y,{ٺrb3̌>Xڼ 1RE9;;(kJ fgX?K$0J`P,BODߝ.N☔9w G4:[`30yO*I*' gxQNv(}e8iZ~q4C+ k2|98l-4Ri>KZLGr+* 6˶x k 15Z**yZw.JěG=N`yLMH4@vQX"r60Ok׃`>î?@jhS.&P^[d0Hz|T7:Czfp&Y\b~}&uݶvC PzzVY.AR KqҔjdFf:k0﴿1yw;$5ql53`WF*1j67w;qH]1>xxR4y[]eDM%nJ8[C$N?:w|x"7>qobVYZ"Hg2:9 h"Xصg>lcmH@k|UNFcdMfj,v8%^(I^T]Pu p w7.κ)m𺽁9UBD5^X2FѦ~tu?~BLzv,q]GNuC7{1+=pu]EWj=j!߳ 1/u%z$ q EX4h >m0 s#%6;bK(U) _e OM֤waP߲i5yM@&5uP!A 3yhL>kU~8î*4(2ZF,-r_hqXej!KPh׽)#xP]FLMlr22/pPĻܧȬWbA~BI2rX{z ۱?˘#]L8jCjQyIG 8}L÷Ni~%y:8L0Z)oPS&-Y{]'z ^j_{+&lzi \"=vPx`k*_mRxT\?SdƂ|]-H펂BoYɅ{ #~$|uǬVS(> 'OLz@|Ww)舞8^?¨oyZcz`4`0JpZUW/Rba28 vTJ{fm\xuAdd>4)Ú'2G*EP,ZBm5k-_8{齢:bMofSL~*,ϣ|-NGdHC@c;m==P@ |rVt^9z|O`QW&=K lreHkUBp0jYX =]mL6{ӋHGʳ_=#6 >Ff9kgI ZPNw^NjàAg;BAy,Dv ?I+@"rsE9V58I=lY Z;ʇ#"(f+'lgf mUj1O֦>f!+Cz_YqPH!߀i񄩁t\/l''8I =U>!s kO+z Nԇ:,es:b !7la;ݔ=MQZbNe%%H/)~N7#_}$OG8DN4hJu6;4Rdv_ ]B^v_$l"|ڂ"ؤa*'?:2Oے}+7ewM`L+˫ItdoBo/ )w- tS_x919z[N4:V0דqTjgWޭﳝ}Mi D'zS1:m>_y kߙk'mh|&a˯sRU/BrFy<[[<|o]X3:99_ߟhd%4ʊ#co^Y$)oCΪ2ei~yi0!E〲v\dw.S@ϖҭ E@F Ek4Н5L"yb7t ?2=_;2|שp/TUxh u0Wwa?Q2!z]FM'lۨ td2TQw*Wi2"QD."َmV.RķLާPg q>ƕlxniL$}͸'!xTv s$ۿخVُPgRm;f LKx(H{WD? t!R3CQku|! lTa> M&S+͢xU5|ܶf1=qW xaN33 Ų0-.<5 M>)k6$nZ22LoRfؖd3/qōM2"4ڇGf~nKO7xaNjhmYe:|d|J1ZU-)YJA}Qn֤,Cb^GiAT]*ͷ+m8"-$~A6> 7<-Eb0- )lݍjft΢ߢ.?'*St?&UnxxecZx4b."ғD7r"Ė-y+\[7z?rJtN~ҥ}"@q3C$3`|D:̴?8 5}NKI/'zhT?,3SErvO@ ;&jQRˈ_f_IzRzg ǰ(sIX&:ĭ EC! NIik(7Hq0qbGW yr 1[r9J"EW[obcmǮsQswd/_\pl`]r~s(SI`+&X|%FMIDrIj)p zed01MB[rn0~eB|ʙlj ?Q`%RqV bx[u dBէ9 3XCv +g C)rÊ]a(dϰa7꼽wB^|/o@)im-#"Ki^SᙼMC#0t T$2g<| H!F~k 4ן:I!GC_&Z ١L*"h:6)le1t c!ŪLM˪1e[{cK&]L~ZnnIy1g JO o*+dk !Clw?e;w\WlxqMHW P/KGJfiM)$NU;ƶU Bv'[vrm$u0Ҷ 1p&e6lhU7-`~|l"!!OϑvO]FmI9pFn0C\#Mou'_`%׏-䟮s2ί+Q@9;!DMQ0Gĥ fN`ѐ6PL7\W7K2*=(. U:۷DRZ.%o7M}؇r4RC V ^D{=^Wb'^fqb=8k@~a9usLS}hUZT!L7Q0C0΁.BLU]j_^PZ#KQNm:DO٤O`[TRn Zn(5 ;{S Gax.wbc  v2_G$m) z oF-tO=̀҂)U~)QDh#)2$q9i 2)[$lrB8M mΊZ8:^~G2Tz/)()meCKM$l7#5>6g aXy_F5\&.. bM?Ny`@@-4Kr*E,?Wa?QE+1SE n^V%8rL6/WˉfO CseqY u6AꝎwsN$%TI0'{+,;c |/).h~SGjJzGY$rsЭ{_O; ?m%!MNt8떍j_ifjUq4ytz ڤJ]>-@Y׮j,w_ɫc0QnܭAw>T.j#i^e\UD a!/RN}ߤ}/F Y5p)3MXwy| 3:GQI)BM|Kײ;y> 3e%imɶyZEo<1g8G<Ƒ[_8c|_'闕匈s'%!O 7oZF/J۳6 A 7z\qY0<'Kjr`D 26 B0~.@@Qgv'8_Ę7584*Z{ݬPd ?tJI bI|%Ȃ= &(M.O{G^e,#R_ Qn3 N (1‰;RDGQJRJk]]vDɲ<[ƟY_ZŗӼS$w &)cXi\tBwaGH#{OxTns ]Lz-Hf>/#${̦1x=h{!X(r.t24-WO1d tEUr0h.*lFs ^k`6)t&xbyB@}MMA{y:A@*.tGMۄeb|lw,!XY[]AVa1OW|Q[N^W5|nyg@&{ԯk{VkV,wV< # )mvwx}`?"Y\S}ҞCtPOGHk4 $UOOV}Xx&X[xj$.XNSk2ȒW D<3 5yoĝ[K((?)17NGZVk,ao,/1ƟJ0N96j:p7R\C-܌pK ǃss]0i'%Pf΁03AA:ތOaPǸPDy=(X|8"Kw1l_FU<_a%w8 U?cV!J/*i#wTڒi1PGa֖Zхe>m[^3w;`^1H;;CU2Wx]M)AςZĒ8}W)V (}<{4:5/|uUS$/ow4UFa]~C )?+X˹K>Qy:;uԛ"8(yrŇ{;'Np(t]WQd30/&Ba $ Ed5D `2M)˂NdmP|RfV62dl45C0jF(>y8WMdOsmq f/lTfp e7ŷKN-5Jk!r YmhDp̈k}KyB:bb`@giVo%]"En1ZôBCR^]J`kw_mb6:G +SkX¡U"d c6l(,Z9 A+j^޽h/}td$1rm&IВ AKRgc5TJ\h^OL,}K&'?vr3 A{kNd(_}(lV&ZQŤB9cBi+&_kteԯkLXӁkPn"R2!/LQ@8]4?t CEcٓ$f , v&ʭ[OԷB&@j9dg]o `D ocJNfP C7kξr~2%F[^$`ɛG2aF3N)2E6{tb*e:*) ioJ&"B;棛MWwZ*FxYnRYlӸRXzǺi.$h BתalrЬ_^936EL1^=~߿4@1"ha0yBFak);(oQrS}Tf<]©tP嫍ۼHzv_U4^c^r EH WT*:8wv ,Pa'oZ>Ͽ p>-m$kJ7FC[74SYUSKplT,6`3έ`C01 Eaob<W6Tx9cC++STGb-޿ ("?ʫ hy+K*oB4A+Ns=g+)@%t*NY=H ʹǔm5]s쥜/A3M!MFY'u 3AھdohyyN۬b[4?5oYʾ%@ʶׁ)x ALs 3հMInʴܨyR3eמA{ăb"P7rY?E E[T0fB d YK>u޸Re} 0C*gӮn^OTϖ c9-O?wB)w0Aߢ[#^_K;8a~$l6mJMH9s%)쒮,_@vhok%CU$PnJ, 2D%W 9/5':M yD돕ѦŅިSoTySwcfE[CHKR2ZE@va2ӲUP1`iq(TnBVID Ȼ5܏#о UW @$ Ȩ \@AĹTYؔ5xÙK6jYxO+!̾U!/pEف}-BˇRfեGU(}_Ȇ?2rp[8*FP b}F[AO?qܸ*Q*tO\2KuMP@%pHm )*@NՃC"lA2_[1v9]Tpe{KܚQBkcC DεL:LMK ~wT~scVHY}+/4^ lwB()Wj>f @O劃o@n]+?[P)U #*c',y [0xƎV DoY.k9ގٹeʗte Ch wN a(7n]Nb.@Unɀ͙*t(dZ%CUZHP -!aa+#9#jU$4:iWȍ2ϵqʫjp&>WxgJ$ǵ֤ q^82S cV]$EODJ`V28e n3; 8>h/C[`5k(&Td:G>^Tk1N֑h'_(f2FۤfpL&{ E#Vn}p;92=5CJR;jÈ ]\;O&!büת0[*&p}_ԪĊP5w+Ws:c ~.GЦF], E3;%xޜ])f$1celev.qDYl"lMLfVEHa"XeMxt'c!G1n:OET1fu$NӾ^Kzɒ~h1u㮕-*y Iu&VMZgga$A;!2qC@%?vßY Wjp7m&ʑ&{19JPG:J{/%(3Q:7bu{fB[ = e3չ^;|לrxc4g)}㪃OxKB\J7Wo4s@X↟`'!i"M ;y "z,(WmAE*Վ|#zʫWBٯ*aEG؆&/E&bI4GC}/.Givh" :QĂ$M)岛Hol-QpP@Õ[+0_L%lq\3^$DrM;cxih+l&/ CU,^|߈%&kkUn_n :V|VNPOϧ M8lRo/\ A!.Xc ΩTeW?⮸hW^Chxp/dOW7)fov#ÒG: \"N,ҒvVɿ/:rʥ.J.[R"'XcUPEq,M+Gi]`Nwbv-.ѯE:H1ȥdG7iݻvѹ2wֱ5ɪZ}akz2,Аk_`c.k杀2jל/Bcy2E@kMzy-1ɢЪ7ޝm @s/hgЖ+@?,D<\vVd}Berf1֠p% ^ jlMZ&am^}^=Af S^_ IO%ȳ!p0 82K秋 TyGQ"C1ȵ~Ph 4c3%(;߱;0U&J.Z}2PYo#g>:;P;gltOl]I"k'o RTMFܳq<<ƏLߵ 1O<+ֹUb܈C 3) 7bEG&F<ncĝ3 9v]B^qp3;*V Gј+gܠ~|p$"IkՄ,g)'q>i9;t \pm^ø[.#P{wV`"~2Zn4g>ίT6h]哶z3 `3z y0lZ3-Wyz*s>ʿAC`ֱc s= .H*JgۖU AFCJ=!Z b,]`"N <-|YDKHggc"n95'՞ւq;{8)$K>|fq~OVI)7l]6ip,K3*G˼ʲ~٣+hM*Xy;#{˂-)AvX)KO c/ӄrUY&4@))2 ?O.(O71R]rLuؖo8i"Yu )qc1- QXdž->)kԔ7yyLl = 6Ssx43v^_y&ghɢȎZ˔w/$PK0۔ϱС]Я)I{o;#% ոzt?gc߫^}lfr׆/ތyVy?DUXᢤu}V'/ RcLVq̚tR\,lbӆmϲw(,[NQm=`=o!f7%PJ ,ܭO`}LW*Js-XוKR ` +|Ħf cFW9cJ<S)zSWтz6JM/(] c>A':,ƵfΈtۖ<ԾZPvB*^]BܜYK%([&UO醄 |dr9+ :vkf3 }ͥ@mJmK?Ӕؤao\h "jBw8ޢ }8aa{X, Vi63+dkl,]/|-3kPqhѻA3osDad.h*oLO=kSO:B/HEo OJ`BZq`ZY$5M?=Nb%o1U4Ul{ĥ슸w %+Pv錔n՞AQzNqֻٖWgT)akS0 ~*EeevoC|Z(O PZF]t{F4MyW hO5ʲF2P͠gסE-H_,܅[ e]uY]Q+„DE لYY<2IO W҇cf#i -QѢ^_B>7+EY(:fH Z}<#n_%K1z/#] ч^~Mт@x>}׶ր?vcVc4B8ދ^HI֎VxzkC~2 F$#!b( K|k:%WAc(kF~D6g)f-_{8 &#_(2,0"=&#~Xu{u$O9TM~n K(Ä>֊EpϢs}lV'?YbvīWXoﮯq2󩢪 KҖ$J9]q峄G|iNد &>lO7Gޓ/šr) | )Ъܠ+h([BFЙ|V3,y PkfhT]pxpp+mhkz*`0K!HX'?thD%H-c׬J7K0T^A%uVHڻ]exn#"6)Ĉ8vMZ)ϰy~ Q~,P:e9|6 n~ԡfX(lRk:եr,K`x_S ~ u g)iѥL|phM\kXݵ]6]\,q(M1<p `Ұ d[vhßn(y e 0`B"-=F BbaUEԓM lବq y0Mhb:Gۡ^GPA?bʅsXE?}eZN@T$k2܏eEΏ Һ96,g95Id8=`@wO>LNYQ|*J轑77U2pB&D,* "@?s uj8Ž1ġyuKq g^K"v|߉xQR<WȷYngh!CT~>5P',AN T]ci={73ю_;[t ij~cXGPA4N؉Krd ̃?8uK&NT\qٺ2Y o }|)!Gg>q㉔5QΖ\xR!wOyV9 JH+¨cb%m|$>Vk 9@Bx҄/w:Dҳ=K.mC%8kn7@JR~>l,s RǷX٢Ja@]4 DDW(pU[dIIJ,w$7²8TJyWt1SaJ?'H02'lAT6j-U?RHP(%fpe =Pgh>_WuׅLqi)#"T•TYK$]"ֈ(%`3 Ad՘ޥ4$,S;JSvDr$ˈN* W,l 2e 5O~i|=Q~iD6 (a gYB TGh]N߉a2N9 Kw2iN.8rw>PUn_Ebs9<"ܬf̧wō=^Tu <8w6׷,C}X GrȒх0_ǵم^hI_%Gw͞8&-xYb,+orӡx&pώ>GgOIȻMU{b X'8er ڂ)S.|;K(C*v̈́$74tXǕ[ud!;7fdcW2=f3 `^%/獯9Ox G@Wb_>gy/lI >Y矸Lj2bЧGoXD`6\j?\ 7sɐiz (П%d^"[OH- 9'N\1KnEo`2 enە#sؘBAn|>ɬb(HP.#rfCԊqU5!霣 ְDsePB8c9qvQrqe!ֹC%W(=sjB#xrG0p~;f;rKs+R͑ˆ\!#ep#g,R"] lr npN8: ͋&\5 (83Qa Ug ˣ[sfb}dTLe;q˖F,<).fѷ(Yٳ#VrQaP 0k>-FKpRejEѸ\Iq3W\6 V``>"R>%ӘWg[ᐑzwg1l_,(/X*͠@I]vᨻ+J{Tʾu]7*ğxw\c}8ԏ`1Rӝ87c*Hvk7љp]rjђ1YLԚbYhuk:4\hw¥nU3HӃXv.}HMQa_xHa"uc `ȿ.IwyUFnas˅ڽ$)V(-E0@f? dƸ}1%L%ثΗzopsGKe%v2gp ԂIU!7o'GA2&xX;06kĢG4bBM _إb:D=](vI Ms0䕳TԺg ^-;oFnʰE%}>p5o7?1^HvqLp/Whc6%oq!lElp-w^ʉvy:9 wmi\U5)`ė㖹FwG՗wEk!b&^<]0w }mYZ['ߓUC6FLv:Ƶgg2&ڀ.wtl1ƻSu}!pdb|>Sq'X%"|rЧﴒcL"R׵ѠUc]*oz "o8m0_yh}:}qTYAXz A?"9s 荠2>՘TW8gjGbiV؜`$_Wjm |,aθ[UooqDSifm5CR&s~ADXOHHkH̎_4[Ij(O_|M^O4E UuEה!Mc0J@ґ xiҔu9{[ 1mEP R1e0INo! U+`V.i]x?*cc Qh3Vje_N à}ypzQ[~7jL010, >gXfƩYVxSd~ˏVCA5C4(ܲ"VJZFVpJױp6Kd|H1iV>1pfPQ"/yN"N'av~L,R ]D`EӋMǽ(J'Yq>0MGW_0VvCA%pR*j\61jT4"/>,f^@ђZkDiaHeoj2iWًJI4S#,m=ЫqN9oCC2Tm^[ |kYJRX!Rc^K+C(x"<<]sT Dj m,ջϳ@0<|eFfBkwL?%diT4/N*,s^*< *g śr`!M=-74"):e ({GqAf5 BKߗޭ6Nxo9&x"I/a]؇T&8s{ m4ؓ Js+$1G1pLB0d8S?/m閣$`=7+KKߝMG{1N\裎*mN/G%9#"wS*52Y=NT֝|J AV;p3\eo,'k6K,bt&BU/*A _.!S]m\%Zͱ8v3Vˆ$o55=ѹvRȂώb~I079޴[(ֈêl ed{a kR݃ rJ--)ԫ/' 6S.4Z`O="t#g%fDrId-gAD%#@ *_|xVn6XڋΤ";3l'q iLk^jc!=y E`z&e۔&ᰧ[;TѳVlHOyNe#}I#,ìkj!?u\9RiA9nDfi)OIMTR~ĔsX[|oW?lsjWЋ,jF`&͚!.5~+Ab#(`0](BSدIjjڰ9k- hȄn>Ť\d:2!Y7Vz='pR2o`Ƣʀ4o7Wr|aoX:bWܖtoyW l@Ѽ[R=><O,ڞj DU5SeC;+aP߷ SB^&_1[Q!Ku݂G:O{3O`H&ͨM/00n'lX<-H rz^2^&؂b&.צNC>CGݢ&Dˠb<98فȖ !`J[qTN/"Dva(LTӆF2C,`8_׮/76!#3 ,:ĩ$8]f79I.f6B|=.8WjՈ3I9*$5e1=[>yUc"\e l&&g-=U }.A Nkt"yȬES.\' _Z!{ٴփ]u+ZTRcȽONNV~\dqBt-.H{02⒒+a8(9cdqK!-s# 4 ?g"9e,Z p+J_XERQ4)FZF28P!Mά C1M2!x=$ FvʪCmuމ,,"oH|ax b8t3j֭݃e7 M `H h"jcغw0iScw!_fqP1іykn, &? (џ.WI d8ŏl(Hm˕ӻ[҆_z`~!7ひ%r۠è$9Y=U7V4i43 |s0P%p"3ŒlFw~=V;Wᱞ <-v=EnlY%"l%fshC߾W>$)oO!x͏ƷB>O|ɓdsZdž DKq@hɛņ q^r ʑހ;UB;֘:;JoID xXemH.E@1Rɠ^~JXà"~CGC4g"/2)WZC&Nߦf_4:l] ]]x rck(Cώ]7',ib>ElW\"y!OLl s\bGZT;&ba|SbȎǪo~Խ<푠M&d8-=m'2 -q J5m ?cZ[񸏹 6>hxxɊ7Z ZZ-yLgt(\sjuT?Fn\ɒ&vE[Jڇ9hڨ@(:lLڱ&S%MtYLkl6*m_lZ:2ƯEǣ&a)Qa[ٯ*Slrpb<}41gh"M DYn) oXuJQX^E`ӎ ^upn^pu)HL"j3g[]繲3PNliq`pD`{YZg[kWĩ&ktJ2 ]^fT"+> )TXowoI)؁kBY=TE{Zo,Y$ s<7i8(hpoe3 q&A<*9|` ՅoiN}۠YD#sdq!{4ix bx%HѠExh.;;נuHِF@ۙƄ6n?!1u1#t-=fqF9MRk2BDU蹷q?$9rE ćg/39'νګS.\'i1p,7݉u ⎺duѼWh KZExh&:Ua-C%|nݜU"btieIn^ @0*XIc2J}h8qy =Fe|VLMkESlk[V'-F OEU>Ա~wVrBTt4n&X4Y@yCiu\-E,P|$v`Vz x(PDVrEKG(;ôI#ѾQ>v=+xQEo(b{لyO,ciя&:wİOZH8`o @ہf"VΏ6tAZds f]ϧ b|5: XC0Dy s{yk WCCS@cE 0.@/sfcsԈp \"X;_hlA,;.ӽMDkEekGIߖP` Qi}c+X\ECU_nL^me,ʋrh.џHÄ6'H);]C F/N0h{ eJPOWmP@S cO̗b(yses@%Pj ~ѿ/JQ0ս*ќNasAtD%c{c?D$v!wc-$HhE,MS,F;(l i?ZA:U!_a"! lqSJ9H$<7ztejϧpf)=ț|מo݌ W:OL1 l-$@i{j|.ʲ߯ z[N//o@ݢ3RkLm$E FзHm99L1'lDeDH$0kTM>;sƣԎȫ{ZGLvnfnDĮyZgt竆|K$`^9ZW]<W kbHB``̒1HJH"}Ra2 cXTM^!G㤑Uy6 1:Xς!4FXOjA] G~YԎة_!ዳ1DEKx(P|v0:\whG::-Z}eH) m^W0񏵯 b;vFwBZH ^MP&q]2"*Ϫ-M{ .|e$vZ>h"l Onj-+zpI7MՀ@XZ14 X;|y ='۔!H!p Ny RBpYG+x aV͍bHeibiJIZzR1}]b¥\,5Z~(̍> 2>:NRx<_+Uu&_Fm#E4`2&&=~'offm~j+x fƏJNb&sq /-Yr(cGyawXBJzךkbHYG,,Yay!i)ECqUab}üS)`A6qBYQ] ۼG`(H %I%YKY:xt[\Cw[`W0!aF*qx+l~X[:\x33M8o}uh U^q%0zw @ (4k[6w^iEy>"w[c/12 cey愢h 띚)=,L:n}FEI,0Ml2"MX⽙7,YkLErf砚B$[C >]a|.6^-/(ujv84 q'o Cs|HrǼqУ :mI GM4AtQJuZ!L#27.Ty Z54cDjOa"-1̓G?CqEfu:ڔ9`}W}OҭoeW3 Owèi_mzKH} L`Is VJp2 V Epr7ʸ9x+kEl^Pm#uᷰR!Vb#s. /0< k ]ti~)g`lo^~ׂvtmOWX-/FmEF7yq܇YOXGL3 eN.:y\`*O*\EAs $r@BQPjyP[05eN*;ZϽWk:Bd7ݱԸ莋 MMG̩@. I>PV   ϗ<-O3PqYRnS}a{[tcxlɍ_IВ!l>KOlG3BT<Ճ=n$bB:*:ecRWb ^P ܃CQykC0ٝDk6ckOAT8>T>deMnb9[J≱/Q*'HWnݵI4?GhQU~DtBv#i ޶0tOqUm3-2$ r}(7f#cFhї; +|بmٌL+ ]T5glx?k 9)A1`~]؅'PdXPfLJiAcHݨQ$L+:]΀ ٌGH\POa2׊B)mDjM m{p!<|%'{ w>mbayLv~٥Ztf;r^{),@M!Xk6(sㄘWK.T7k@޶~[F#*JuELśx&G{;e,`m?R!丢O]]."ΣuG\ &Ѯ ;\-[ϯFL.\0߁MS'*ܸ!3auųwjCX(Q&}!ŀĜ'=<~]p, HŹʦ*c0G7ހNޙPH 7K B _n|/Hdy,^)p!⃲#f3M4D4-|V'|G',(smuN%m;+u\pɍˎ _Q"i<23d7tڶMjkP!YsY=.J:*L/2jFD=i$=O =g>]B`7u0|$>sL7e뷾rJh>6Nϖ):ŴfL16|c;Eҵ0@w2BuJl P vAH4懺!),<C` 4x#[!߬.ukmdz:E/]D(6*g|c=$g!~Ęp[a2p:Mѻ΁ w9&V]6,oL`yvF)Vfl m!s'qv?-&"3<(]#2!"S+)c&*ǀ"y(ØX6M7" kq収,;~J%(t 8Zl.!S ,Wzjz9lkCؑRS& Lfm"YSC E3FuJWUm4q%9qUK![NӪGL(hmh[E}8'A6Z7cr Z9M>Z[K/F2 AQ};<ԅI ڇӋz؎;N(Q2eR΢g| LlI CюaJCã.K41e (>(VvY9#v]nˡ],13ky#@LM1bD˗X(mxB0yN #JgCɞI T%>[fƹ7ٝIӲn5jJ`XhӲ~ʔb;jMRŞSvϬz`|:.㕱On%o"{V40hhznb Ķ(wY8(4 gM7أ\鴽˽GJ˴$^c2rdEuRyM~̀?W GdIJ)8 SКfLfo{uqh AN: fW<" '^!Jƙ7hf_ t'\b'Qj\PX>>Lxi.f jgR"c/L#%Nߨ) 2&J-Pֽ{4\ bl:eAAx~/"нuإqSP1($[R_S=abv.@5'/Zr9,C[m]x%RYiot-5ni%Ʋ"nlAA #OE(U˅13I)/q6~~Tg>'!B m-&'7&Iu>~:6ߵ_giD_C4%9x+(X!`s+x J}~A|0"՞1tIA%z:Y_ʡЃzYf V,r)p1,&nS=cH'e7vtvVw9;"@|Lo|YH 3e$,zJnCH!ڻO, 9>w eѨT2yҒ 1ÙUY$ )=2p%fu*1Z".QVw}lR_NRdbB%J605=hd`sqgdG rϱҬqt4wfkBRC,Vr;Frՠ-/pm-W)pfs3x {aK,.vLX{biۢ! }p`b 34цjK]Q5Н6cVR>>]۴AZ{F17ï;ƣuu!pDP!n~)=}_Y۷*s  P:>ˉ߅W˯=]j ?3P XNIkږgIV!vNp1sTGs~L$z[ὺd{MrN}uDvp$ ĬD?m~Gߌy ec՝*ޗo8C@=}Ŵ<)5~+$='T=B|4ŠD/Z_"ҭn>D?L8{~dxLS#ݱQ 0Mt>w\d^#ڷ⾱o8'؜lʥL`)&FgppTflR=2#[Vݶ3ͥZDW福Ϸr<$5^: }۱d+ɒ8* 9m7Z4~Ѽ:b{V)?S q===Dw$)ꮎMJ X LvԌ XOUŽ̀Th.z&ۼyb+B)C=( jsNj7͓CuN8V{ISPN| @Ӳ,WJi@nĈ.R@3cড়jSb@$Z{0)`:Xc3["ؠ!8m ԞV!\)4*AjD{()MZa{!=^~(n\1&6YuL@Bh J{^:luoT^K>JB3Y߿y9꒶ b]O:b8ގm[ lʤ).uXvCDDQkMD->hRk"J, ""J"UA_j]n ="R"0޽Ap&%QO8'-=snfF%#ܬ\K) l !:2S*Un/`eѯzrdD F6"d+n;h iK){xrz}dur>m.eɱeU,ڛlr&MD) :j;a-ql-V9e|4–봯UU|,3"~P~/jeϧJ:&;NԳTPM#Ţ(󋮲\@N?$ɞڴui_ n,:U*U͗-҅O?9XJɰbʻT R;4'♿eNACPOgcKSy߶jCĊ`DY<;.4  bpLFȸ5U" .J4"ZK1l>P5;\-~$;u\QjT,tO`^7%̤e [+;_)),|P6 ([ykG,祝|e;J 0w?G{ |h-$T,P/FQN':W%&Ji1k9՘щZQFN3\8v\I}4R\$7(u'¨IER&?WR Jc$"SclWze<#rXGs+ 0 =;11x݅$r KfE\Wj(B}) ϞPrX"Dl 9#,Gl.P'U}+4~ V~ȎVÝXSPCQ(h)H b[*˟Dufm!yxe` ߖ.W}F~.rԺ1 y`:Sp!%'K7>2TrVޓAJ^*x}8iz l-gjwEϊrs-#./Ptr w/=& ;C:@ri=*Ҁn*f,|Hot3^)gn_}X}K^.,Dszw~6o.Y?/XoM 9Gb] p@ A]z#zMh1U O!菛:c4s릴b 7u(]!a=&%'JMhVծh2Z 브a*(*Ibإ/?GKHZ oȯOVܼdJRE&m3>27c43-d$p{2%oneE%c61@gԿ^$xXRiS9wQsNGC0+z!-=xL׉w9tb)1;iBݝK)@65iFjż-ӥ7b-;D]nX]1sAx< fҲd_;SLs & /ɹh) nzpY9 9!`o/HC A?E␽Z JN{̕]w1Yr2V(l=\ū;oO-HRm`fg!$sbwWKCmS4acE1dc}4׷>r. ~_ }{zd}[j(.f3M¨Otu"F px4T~2ya9&ь6 ZBW5u6Q@Z t4})FIgiK=2~ׁ LkOUTgA>]сDJb6#&rv,a,J9BL˻<)3hoa=)(։"1|3R2yA}ڹ=UKcZG39,xw41Yߧq̚ƖzMo+2 ;IoİR=6F_ĚrEqh "}iyԇYٞƠ$CKlRd󋮐=@@$tpҎo)Y=TEn w=@޸Y 4Vus=/Ga/^JA/IOu6m6ušϪ:{ xEBl35ЀlO:^tkQO!#DF(UtDEH 'cǣ72tB71蛹B8zx ad{iIe!o$ni.q'c{B d&1D}[iຶנ0)]H7V4poa&α$gR(JDq7%Y8C; EdϦELHR/-"jS˽5&myve﷮ch̢zTBhR ˾skkfJTHF n n <&boy.+g y)'ǹ8 Jk{oa;`ر. Ћ~.lhYǾ@W lICoWBtqծp ckk-P7-vz&Գ|%r7\@h7QЦ[zhDPJm/2T?*KTt *bN5ʶ5ɿ"t妵e?M.*$!3"EPe "[c26w9`M%vx{Y,l+5 c wI,L- |󇋤zoɋ7ߏqX)ijR`բBf*" *%QY@.t1y5nګnb9eq1%fYtDKw7ƿiSqS_qB}OyI5~ؙufMd@ WeKEwehfg/- 8RCI#gS^#r?xS-8A#}.=ß9EFNg0=qS΅\VW#5 ' G߹#c5Ff>;Ы頿o(D~ziIAi'21Rqqd &_6Hjf3nJP KW֎}gAGl%[i!fyLzG1] a2dh(B͜%XzW8t8.*S7b?׏!/12yLiff*i>$# ycb:"ĽVg:] ΐuz;hFC6lnf,0EkB@T3֙ ÷ǸqQ ]iI'fFMtLID>FQZ|$cr T ]F5߉loid©S!l3Ȑ+U8op[:Y)$.gi19|[256j^{A}mPhc<ڪ>1A[WGc!%sv {82=pݺ~8ĢJ7<[~4 eΉI j՜̳fw"p-RJΧ0[/W*F o w+]dmEWpsc: Ĉ 0P/`ai %׆;X{BG#Q֐ak}Vg}hR LgWI+լ:ΖauDaIsw̅8Ն,eQSuaxOuLxVCWY^/qbd55 ":/ڐ^g+xG:;B!=[\X&̲Um[W;be\޴z/kXHe4%J`3G.w5Stg=a&U?ЗKp_o*pNPX$c.CyteegaCTCP4{p늳 503VY52}=L?'Aa;c oc*7ey25 t=*9: Ĺ)g?1!тPoХ̤ɠ{G~'˛o@4WK#~4gu Ea:0myo`[}P"骾L]~P>||ԫm/%8VY&3Vh0_荽Mlmi'R9cPSF{#py7KWcyQaR%!QU b$s )NQr!FoT,眐Ws_5:cM6+أD1Xe3'JB4|%6 HpAh48OT:7>[ <o0DJi!1xC+g3êp@ǔbi zk%Gr#yYվ(04ܧHȄFPS-zeDa@zR%.]y`&l M@ 5  ^e t=?{EJ]Л-r<SFцQ' NdʷLɰx)QK2z{UH vpDw|"3‡N3zJwNzn hV&(M,Wf8Kk˧lQ[4Shy,nׄx>OڅUxõ Ƀ;aXes5!-ۜ,fG E&!:L[ FK V ٭҃$RGuVs˟KK@׸TNjQZ@~$D[i:`)1Eؒ: 9<Ժo(3׻i{+)k>$wgj(YɚGw<T <8_~]jU)&}TBTPCtio8)x2ԋB/%DXA? "O␱xH(=v`O)߻[)A[_az XU|g8w!:;+pM+$%hFSiOr^A]a ٙ=Oqj`rW k0:'ɿ:y߅P(} u#Q6g-$궤D`~faʚ:v/!yiMrVϣ-|fy,]|p2G$d>R!\ѬխbpUr3OW ]7R ڼgiK*T4,0g^sgCTk詎 IkCCܐ+ _ ۢڧ=z"1eU8`ؼ v(7e5>-+MXY\wd#ݧ0hSdF i׵?W$ (xe;,'3!XI<Ϛd?Ұp(،tÁMQJeM4htBG0J +d TjS [Ί^G hHFf5!X4N'232 OHN^^/MI}9gZ1oyK.h' HR- FYl-ܶ+/MtTZ7푟sxSwlU ZO)5 4 tXou/uݪsjxuo@TItz!<y#TC||uc݇xN7Øa+i;r#߿B+/K]JW*BE{xĊ|Q]<$+JXn f{"QXnb3prUrBBz8Yk jf߫,B4_f\ɮNpDDʰg4XpnMu[/Px{9SxJ9ߗryg1"Li3]LWo`@O7gIWau5k}ߩyoUDIhYh$J Vav"u 3SlnkyLҋIAE0v,}OSۇhE]}a֨+%=Z&:{Ka)J;!F ˺=)Y#л7fPDk.+7{cwr>z_ ^5ul h6ƬX2^N |/;(|`<*mJ)h$FhUJ 蟦oi ^V:q8w_-V+lH]_JzR}*pE3iH 8>8!8Y NB,jV-p3Xu"@&^W(qR(v;T}(P%jy[sD\QcB ԭe*D&B7KlnEtda$r3AuQ7kk[/4kGHWm "]OBsw/"I~2X/Vlt WdoڙG!_?4:rݝĝ kaYۧ@ UG)ö懹ti^S@@<~ >dzH9 GYi]"`PJ\P]ޑ UD}jo a/b}u;Vs5XDDspnaozt23GsEid &+269xMA5˱+^*ҘۧK'D<nQLGz'dHP!rO\P- NJ2B'0 |T!7큞l.Uo|4KӢ"&"]70f׫e)o.8u 1l95wmr-<❧mTyow&~Xw迪PAoABk_4ݥiЦnykR"xmgL켤x[Kf.8:PCRY?xιhlj^*NL39JoU@ul!IbSFGյeB,knqwSEmVnlkNqW]Cb!B~ dv|(iw%'~cܭ cP!8k_G9X_*`6FÌ%>"j//ݜMۦ+ZA0ޤb- B`{KtWJ >(; |b OZ: B 4peVSz[PjU)ϋ2&.vbׇ\t șAY9{ dq㩳Jj7[&XJHwh`p|kZxnJG/%:OD+ &4+rx҇)F|![E:lX.CYQ99gqGi ش'ux_w~.{cC‰s\ђH|KGS; \ 0i7`_9]=k+CkӰ!2NRFQ=##Hs.<۲X5&?N~uAXעԓ эpzH>ĂiFj'WҞ3>;λ6Z}ܠS@"LCD-q+Y6B\> alȸN~f#0ʇJDxL6(Xv 2BD 6)+n3ކB]; 90/v!ʺZiޝ|@d%tK0Ie\Mo&&M(X.O14 k=sHg5]_FηQ/)x-:g.qg0?ac~tϲaјg(?RR-Y^Ը(& rOے^9%k`'7hO>iUnDtE|~ئ2eWH*`;E7_/>mKTi ;rBaAZے>t!襇7rqL/=#lWG>Wjtƹgo= prZAzl2R6<9fI?t饅{#&i뾣l~Ks:*İʣ?{o9aRtʁ7c[DţaG/4x_9&0@fK;?x^AA"+=M'9ɝaR\hL.iKCCӎtn;m, EZ2TVDQ8^:` 2϶!@Ƥ?pqiV~fe"ۍ.*}=T(B@tBgL M>rB\fb`bWym3Dݠ2D n(£/´tQ 1;1zsXUDHH<.j6u'ׯYe-d9Z=]2"pjrzV+T5/EY+PDdGjΜv jԺr &uRlޖލ o:<%U_Q1 dKX0vOvGJfSHEL 5PV#=> '+Jqc27x%P7ZG-$qkI"!ؕq jZBZ&'5T ERԲjڥ_ʏuƷR*V qVc G/Y{KeI6(C!#{V_&p!daܻ/.t^Y8c 9L64.a#l OgиV'sҙқ*ʹa̞Gx/RCײK9v&#=h/>8.H:!c)a8ka^ƒP=& rRܯ]ڥf˦:H6,Jv!~džؼ+GЃSq V{gn0 ͮoo<#.?@[߃؆0'p c(H,}(=E 6焖1O%]`;qE?dQwb)MC+Oxè&#vIt~@f)^ݻyLm1Z+Bo[<= |&!j ,$Y bZ=Ih0N[3/@)%ڦϘ$8X>E>qW=+<"[Hfϖnn*Xc[Gy"áѧ#Ϗ~RΟ8YX]z8K"O86 [N9#~)R|R;Ω9Q^δ (q*qWisvس(|Sc n|I+ ;'#cMBNL%I(q)"S\tGTۍ|e+^``C0w2 렇M%_21񢋪*rE0@pCs xm@H$Qy,:з!dK7a DZ}Lo{sVYT!E!]"L r/Z/tGL~}Q6]TÇDm󡾥rF$b7nt찄?D_<9ڍ[ث0Vb9F5~9"z =}J%@Oȟf芟"-O&XX'$1( Aحk|TR_Lxt'JvO*zfخ"9-oZD$y÷ d5% Htw{Rc,_0&oc/3Hv Z-s)|&-6ӷbZ7PtKL:O?.CUwÏg $P-gOs)Mjvqo3lN1MeD@"{!309@ u~rt`?_)E\H/ubz%\9#OS۶eRhv:W";4s- OGMA~kRW%5DcS &Op̠&*?RU]z3SF=6UU>EWktxN/ $KE [IjwL v5q'!ѿzP};DR`|A@]=ݑW1\>>(7By\5m͋9"D[:AԃC :ץ/4"OuЁe.n9+ \cP}VO0$d^:mlP&lfF{8;P9&L k1 l]j"Z*VfowʠHpqIY{J²p9֢+XP{h?};a#Gs (۪QY0|&qAyhV7ب{GǛ VG90VN~r!E&m[55̟%=2M:տm4ŏ} 1'N.f1!/Ȣن]̿!#vtV8idTx4݂$E'"D|gIі7N7Z;Hza >>`Y6 %Qz&o;~h^u.x㗑Xoϛ.͖RuHVL/Q{FܘO2󊛞X)'¶(pW7] Vhp\r/޺it3aʻPYw] Iy忓AÔhRѹpDf*F7Vv8$/H w%r2ͺ5Gˢ*j׀^sH*Aj:69۳ Xu}=#BOa'Fn?5ۏCۨn$*<,^^n\/:;x>wvaQz_dA{=`mI. cD}JNΝRP_D,RA)Hal"Y]dW.%sk;Oz=~*䟳}AyZ`@f)yiv}Sm&xcT.r*, 7{x<jGC9,'mGs ,5=%**5L6lcd1 T'X:he=tFeгz0^P"Ur/cܫNsa5?.uȞ敄gv|!0v< h?fv~#鎦PBFh>v􊟤HP"tWU@x+Nx,8>Zq/F7ŝvaSp։yODR>c5 p[Sp`1񫡖jEwmHaP&_g0"T7, Vr+[si|&I|4€\-w' &|tN,Tlǫ!UŔYk3!!$SF/@:DYH^~:$Kp ~`:>; Z0YGzpm}v:g)^\ĚH ~*4Җs[w#`X7{7?ack8:'BetW]z7<4?7> ]ڣc nʬy_h.:"gEVsξM5)o}w,9{5,M)THDRF%^pՀZA14Am Y_2Un_@$ Y57}ŜE!1L &2jb/g O@0; Sq~JP Eun.:$ /+\0_Q7VP(q9,FE9?C@D5W~ Q=("\#;:`,@1:} 7H+m`럸_FΫ•2)d@`֛=rP\?E);u%}|pyC,g=*ÍQu)N }zq[>Pla LTᕩ,]\meJ1R8G@e#h%BZXtGEZ&г 7w,@"us@ckT}_vg0>J~j`DEL*.VB 'uX%VXF U˕سʹ b{|*ox:ٲIj5dF̊^֖}6}x}42[DWI[%lt[SoTワB+O[x9L+kZL1mPH>E:{ pՍiL!SupGj F捻zv8(Lȅ> (yF÷a$ C<|}i?gnEwy\K2(ӯ.#bc6AxדՋu,}m5I<+lan Ic+2lo!4 |x|mu ҰikLTbY6* x#uTC40IgMmFD} 7":}G~3i%9s0: ~ļTmJŃTj#DىBS $X:/,`Jl"h'GYvaxzk(hY ǢZ XzLboy7or "©ĢtX$|H`Nwࣄ}Б&e-1k5a@< (j*]9=֣")(~H|-Fl( F`+yυ_1Nӣ3_z{K!xzcQ]__%rk 䧻(k^^)b묺zr,A tZZ!K:xU jO3Rs^flisHWd˳hۯ`URb76 1lM˦F!˃Vh)ڱv $cl̔xZ)}W0\Az{Y|;3az=!{LE{mJhPG5%3 ۜƷS*j_8 ā4ỹ;JDJrb8`ObScC=FXkVS!+Oּl=xΔJ.> XIHɏ7,$,>2z;ħuC Yc>Gs!:q-tBLZoXB7PbKl~'e&^Qs4: GGl 4 7Cc&/e,Y_y2&rnb_yvl{() 'I/I /TȋBUw^吳Wѓ(r)L Ni{ӆsU m$nQ~K NY"b5Bp4,V-ɠğF(^,mx `Ee)ETSs%ibѷ<2F~d }DBSW`..U$ @s]Zov)e6k9>z :x?(6 Fiz3;GA |ע 4_f`Z'p;|I* QXM㉎Mt;(6Ez3 䨶cpuCZ y( gx$Nv5A3CpɸoߛXCF&\1 !#XeE7ԑb@G*O f"s+i  ;Pȶo+0SRYuQJ>yQ1i%Kb-p٥E4 YNsJ:LvAc?!NplБdA]C4Jҝ dyض8.^!fX}cU<~y) ()!sU./X`R52-; ~"ҙ?%D|dӖDl7Cn2 F$AG fcuXR_OP;Xz8SvPv W\4.Zk`Jrb< ort@4|l w©7g;{VK*rH_bbNx=22ӯbܝEڋ%Zƻ|BF\S T~~/KO{0cRax8'iw261万7 hjKz@ LKz9D|\:dq[͵-(1H?*cs+h~JqXv}`!aH̽䡦& d-wМ5AizN  o eNW/>?FͶe{Љ)9] w %,szEkd @UxYx*́_ShBR{_ڙHhh0>LJAؖ͗MKs"Y2\m