LISTSERV mailing list manager LISTSERV 16.5

Help for CODE4LIB Archives


CODE4LIB Archives

CODE4LIB Archives


CODE4LIB@LISTS.CLIR.ORG


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

CODE4LIB Home

CODE4LIB Home

CODE4LIB  June 2014

CODE4LIB June 2014

Subject:

Re: Excel to XML (for a Drupal Feeds import)

From:

Ryan Engel <[log in to unmask]>

Reply-To:

Code for Libraries <[log in to unmask]>

Date:

Fri, 20 Jun 2014 16:19:31 -0500

Content-Type:

multipart/signed

Parts/Attachments:

Parts/Attachments

text/plain (304 lines) Parts/Attachments

multipart/related (304 lines) , postbox-contact.jpg (304 lines) , compose-unknown-contact.jpg (304 lines) , text/plain (145 lines)

Thanks for everyone's ideas.  I think Shaun's solution is exactly what 
I'm trying to do.


> Shaun Ellis <mailto:[log in to unmask]>
> June 16, 2014 at 10:36 PM
> Ryan, it sounds like you simply want to pull two relational tables 
> into drupal using referenced entities in a one (question) to many 
> (answers) relationship?
>
> This can be accomplished, albeit unintuitively (it is Drupal 
> afterall), by using the Feeds CSV parser with Feeds Tamper, and I 
> would skip what seems like an unnecessary conversion to XML step.
>
> First, you import your questions and set a GUID target (typically your 
> db id).  Then import your answers -- each should have a reference to 
> the id mapped using the "Entity Reference by Feeds GUID".  I have done 
> it in reverse order too, in which case you'd import all your answers 
> first. In this case, your second (questions) import needs to contain a 
> single column of delimited answer GUIDs into a single column.  Use the 
> Feeds Tamper explode plugin on that field during mapping as explained 
> (rather vaguely) here:
>
> http://drupal.stackexchange.com/questions/32234/how-to-use-feeds-module-to-import-multi-value-fields 
>
>
> If that's not what you're trying to do, can you clarify?
>
> -Shaun
>
>
>
> Joshua Welker <mailto:[log in to unmask]>
> June 16, 2014 at 2:35 PM
> Sorry, the last line got messed up by outlook.
>
> #now save the whole thing as an xml file
>
> with open('myfile.xml', 'wb') as file
> ElementTree(rootNode).write(file)
>
>
> Josh Welker
>
>
> -----Original Message-----
> From: Joshua Welker [mailto:[log in to unmask]]
> Sent: Monday, June 16, 2014 2:32 PM
> To: Code for Libraries
> Subject: RE: [CODE4LIB] Excel to XML (for a Drupal Feeds import)
>
> This should be quite doable in most programming languages with
> out-of-the-box tools and no tricky parsing code. The gist is to save in
> Excel as a delimited text file (tab is a good choice), then have your 
> script
> ingest the document and turn it into an array, and then turn the array 
> into
> XML. In Python, it could be something like the code below (not tested but
> the principles should be sound):
>
> import 'csv'
> from elementtree.ElementTree import Element, SubElement
>
> #create a list
> mylist = []
>
> #open your delimited file with a csv reader with open('myfile.txt', 
> 'rb') as
> textfile:
> reader = csv.reader( textfile, delimiter='\t', quotechat='"') #this
> assumes your file is tab-delimited (\t)
>
> #loop through rows in your file and save each row as a key/value pair
> (dictionary)
> for row in textfile:
> fields = {
> 'field1': row[0]
> 'field2': row[1]
> 'field3': row[2]
> 'field4': row[3]
> }
>
> #append this row to our master list
> mylist.append( fields )
>
>
> #create an xml root node
> rootNode = Element("XmlRoot")
>
> #loop through our list of "rows" from the text file and create xml 
> nodes for
> row in mylist:
> rowNode = Element("record")
>
> #loop through all the fields on this "row" and turn them into xml nodes
> for fieldName, fieldValue in row:
> fieldNode = Element(fieldName)
> fieldNode.text = fieldValue
>
> #append each field node to the parent row node
> rowNode.append(fieldNode)
>
> #append each row node to the document root node
> rootNode.append(rowNode)
>
> #now save the whole thing as an xml file with open('myfile.xml', 'wb') as
> file
> ElementTree(rootNode).write(file)
>
>
>
> Josh Welker
>
> -----Original Message-----
> From: Code for Libraries [mailto:[log in to unmask]] On Behalf 
> Of Kyle
> Banerjee
> Sent: Monday, June 16, 2014 1:04 PM
> To: [log in to unmask]
> Subject: Re: [CODE4LIB] Excel to XML (for a Drupal Feeds import)
>
> I'd just do this the old fashioned way. Awk is great for problems like 
> this.
> For example, if your file is tab delimited, the following should work
>
> awk '{FS="\t"}{if ($2 != "") question = $2;}{print $1,question,$3}''
> yourfile
>
> In the example above, I just print the fields but you could easily encase
> them in tags.
>
> kyle
>
>
> Joshua Welker <mailto:[log in to unmask]>
> June 16, 2014 at 2:32 PM
> This should be quite doable in most programming languages with
> out-of-the-box tools and no tricky parsing code. The gist is to save in
> Excel as a delimited text file (tab is a good choice), then have your 
> script
> ingest the document and turn it into an array, and then turn the array 
> into
> XML. In Python, it could be something like the code below (not tested but
> the principles should be sound):
>
> import 'csv'
> from elementtree.ElementTree import Element, SubElement
>
> #create a list
> mylist = []
>
> #open your delimited file with a csv reader
> with open('myfile.txt', 'rb') as textfile:
> reader = csv.reader( textfile, delimiter='\t', quotechat='"') #this
> assumes your file is tab-delimited (\t)
>
> #loop through rows in your file and save each row as a key/value pair
> (dictionary)
> for row in textfile:
> fields = {
> 'field1': row[0]
> 'field2': row[1]
> 'field3': row[2]
> 'field4': row[3]
> }
>
> #append this row to our master list
> mylist.append( fields )
>
>
> #create an xml root node
> rootNode = Element("XmlRoot")
>
> #loop through our list of "rows" from the text file and create xml nodes
> for row in mylist:
> rowNode = Element("record")
>
> #loop through all the fields on this "row" and turn them into xml nodes
> for fieldName, fieldValue in row:
> fieldNode = Element(fieldName)
> fieldNode.text = fieldValue
>
> #append each field node to the parent row node
> rowNode.append(fieldNode)
>
> #append each row node to the document root node
> rootNode.append(rowNode)
>
> #now save the whole thing as an xml file
> with open('myfile.xml', 'wb') as file
> ElementTree(rootNode).write(file)
>
>
>
> Josh Welker
>
> -----Original Message-----
> From: Code for Libraries [mailto:[log in to unmask]] On Behalf 
> Of Kyle
> Banerjee
> Sent: Monday, June 16, 2014 1:04 PM
> To: [log in to unmask]
> Subject: Re: [CODE4LIB] Excel to XML (for a Drupal Feeds import)
>
> I'd just do this the old fashioned way. Awk is great for problems like 
> this.
> For example, if your file is tab delimited, the following should work
>
> awk '{FS="\t"}{if ($2 != "") question = $2;}{print $1,question,$3}''
> yourfile
>
> In the example above, I just print the fields but you could easily encase
> them in tags.
>
> kyle
>
>
> Kyle Banerjee <mailto:[log in to unmask]>
> June 16, 2014 at 1:03 PM
> I'd just do this the old fashioned way. Awk is great for problems like
> this. For example, if your file is tab delimited, the following should 
> work
>
> awk '{FS="\t"}{if ($2 != "") question = $2;}{print $1,question,$3}''
> yourfile
>
> In the example above, I just print the fields but you could easily encase
> them in tags.
>
> kyle
>
>
> Ryan Engel <mailto:[log in to unmask]>
> June 16, 2014 at 11:29 AM
> Thanks for the responses, on the list and off, so far.
>
> As I'm sure is true for so many of us, my interest in learning more 
> about how to solve this type of problem is balanced against my need to 
> just get the project done so I can move on to other things.  One of 
> the great things about this list is the ability to learn from the 
> collective experiences of colleagues.  For this project specifically, 
> even clues about better search terms is useful; as Chris Gray pointed 
> out, basic Google searches present too many hits.
>
> I did try following the "Create an XML data file and XML schema file 
> from worksheet data" instructions on the Microsoft site.  And it did 
> produce an XML document, but it wasn't able to transform this:
> Row1    Question1    Q1Answer1
> Row2                        Q1Answer2
>
> ...into something like this:
> <row1>Row One Data</row1>
> <question1>This is a question</question1>
> <answers>
> <q1answer1>Answer 1</q1answer1>
> <q1answer2>Answer2</q1answer2>
> </answers
>
> Instead, I could get it to either convert every row into its own XML 
> entry, meaning that I had a lot of answers with no associated 
> questions, or I got an XML file that had 1 question with EVERY SINGLE 
> answer nested beneath it -- effectively all questions after the first 
> question were ignored.  Based on those results, I wasn't sure if there 
> is more tweaking I could do in Excel, or if there is some programmed 
> logic in Excel that can't be accounted for when associating a schema.
>
>
> Another suggestion I received was to "fill" the question column so 
> that every row had a question listed.  I did consider this, but the 
> problem then is during the data import, I'd have to convince my CMS to 
> put all the answers back together based on the question, something I'm 
> sure Drupal COULD do, but I'm not sure how to do that either.
>
>
> Finally, this project is a spreadsheet with 225,270 rows, so you can 
> imagine why I'd like a process that is reasonably trustworthy AND that 
> can run locally.
>
>
> Anyway, any/all additional suggestions appreciated, even if they are 
> "try searching for "blah blah python parser", or "I made something 
> that solves a similar process, and you can download it from Git".
>
> Ryan
> ___
>
> Ryan Engel
> Web Stuff
> UW-Madison
>

-- 

Ryan Engel
Web Services Architect
Learning Support Services
College of Letters and Science
University of Wisconsin - Madison
291 Van Hise Hall
[log in to unmask]
608-263-5002




--------------ms000002060804070407070702 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIZRzCC BJ8wggQIoAMCAQICBEaekRowDQYJKoZIhvcNAQEFBQAwgcMxCzAJBgNVBAYTAlVTMRQwEgYD VQQKEwtFbnRydXN0Lm5ldDE7MDkGA1UECxMyd3d3LmVudHJ1c3QubmV0L0NQUyBpbmNvcnAu IGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0 IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3VyZSBTZXJ2ZXIgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDkwMzIzMTUxODI3WhcNMTkwMzIzMTU0ODI3WjCBtDEUMBIG A1UEChMLRW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1 c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5ICgyMDQ4KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK1NS6kShrLq oyAHFRZkKitL0b8LSk2O7YB2pWe3eEDAc0LIaMDbUyvdXrh2mDWTixqdfBM6Dh9btx7P5SQU HrGBqY19uMxrSwPxAgzcq6VAJAB/dJShnQgps4gL9Yd3nVXN5MN+12pkq4UUhpVblzJQbz3I umYM4/y9uEnBdolJGf3AqL2Jo2cvxp+8cRlguC3pLMmQdmZ7lOKveNZlU1081pyyzykD+S+k ULLUSM4FMlWK/bJkTA7kmAd123/fuQhVYIUwKfl7SKRphuM1Px6GXXp6Fb3vAI4VIlQXAJAm k7wOSWiRv/hH052VQsEOTd9vJs/DGCFiZkNw1tXAB+ECAwEAAaOCAScwggEjMA4GA1UdDwEB /wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYX aHR0cDovL29jc3AuZW50cnVzdC5uZXQwMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5l bnRydXN0Lm5ldC9zZXJ2ZXIxLmNybDA7BgNVHSAENDAyMDAGBFUdIAAwKDAmBggrBgEFBQcC ARYaaHR0cDovL3d3dy5lbnRydXN0Lm5ldC9DUFMwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5 oSQJFrlwMB8GA1UdIwQYMBaAFPAXYhNVPbP/CgBr+1CEl/PtYtAaMBkGCSqGSIb2fQdBAAQM MAobBFY3LjEDAgCBMA0GCSqGSIb3DQEBBQUAA4GBAI9lojCOJquK7DUWmOkD8I0XX7xMbAL2 dFLgwsYfzvKmEQyosQ5NhItxNu+zNUXzwfiWxYtVpMxrgxYgMtq++6+bt5/hfoSfnjxQpz9c wr6LhrgIku74QisNE+N2hUgKSr/QpTsKsFS4beMI+TSNC46LEswXGjOHlcieCtxQUxd7MIIF ozCCBIugAwIBAgIETA5iEjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4g KGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQx MzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAe Fw0xMDA2MzAxODM0NTRaFw0yMDA2MzAxOTA0NTRaMIGAMQswCQYDVQQGEwJVUzEQMA4GA1UE ChMHRW50cnVzdDEiMCAGA1UECxMZQ2VydGlmaWNhdGlvbiBBdXRob3JpdGllczE7MDkGA1UE AxMyRW50cnVzdCBNYW5hZ2VkIFNlcnZpY2VzIENvbW1lcmNpYWwgUHVibGljIFJvb3QgQ0Ew ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMXI+wxZoiWKTiB15DT/VyF8eTSWED /vatNS6/Y+s9kbGo2oI8Qlk/lsWn7lv9UeJmIVeu+Pp6iNTyQ09kOAyBBmAQ/yKq4PRHnsrP uxgkirXZ5t3AumSPVr62v2kHVce9S94LjCR2UIov0EMvs8/qq95KIGxGLTgdoeDVXI/5RZeA sGTquePKvbHest1FmPQaly2pRPdnlRHEmJQ2NkaR45AeQvKKn8kzpYeCoBLyCsD0HbHzlIfP aujKqEcQZIbJUyD0y++KNajSPATWImCt2eXdeHEUcnmcHGq9ha1EEI02oW8zT2R0xhjdLoR5 Ds+xg43iGyxLPdoliIxHVPhhAgMBAAGjggHtMIIB6TAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0T AQH/BAgwBgEB/wIBATAzBggrBgEFBQcBAQQnMCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3Nw LmVudHJ1c3QubmV0MIIBGAYDVR0gBIIBDzCCAQswVwYNYIZIAYb6a4FIAwoCBDBGMEQGCCsG AQUFBwIBFjhodHRwOi8vY29tcHViLm1hbmFnZWQuZW50cnVzdC5jb20vQ1AvRU1TQ29tbWVy Y2lhbENQLnBkZjBXBg1ghkgBhvprgUgDCgIFMEYwRAYIKwYBBQUHAgEWOGh0dHA6Ly9jb21w dWIubWFuYWdlZC5lbnRydXN0LmNvbS9DUC9FTVNDb21tZXJjaWFsQ1AucGRmMFcGDWCGSAGG +muBSAMKAgYwRjBEBggrBgEFBQcCARY4aHR0cDovL2NvbXB1Yi5tYW5hZ2VkLmVudHJ1c3Qu Y29tL0NQL0VNU0NvbW1lcmNpYWxDUC5wZGYwMgYDVR0fBCswKTAnoCWgI4YhaHR0cDovL2Ny bC5lbnRydXN0Lm5ldC8yMDQ4Y2EuY3JsMB0GA1UdDgQWBBTAMkkFZmaDhxlpua6DJQYZiwXX dDAfBgNVHSMEGDAWgBRV5IHREYC+2Im5CKMx+aEkCRa5cDANBgkqhkiG9w0BAQUFAAOCAQEA D7NwMLoCbvFzWEObVh724gCE6XY+xB2NpOrYpu7dlh98kzn7upnY1BMhjvLHiWDMcxIIsar/ XFNI7AePCF4PGpvfudBtB/U5umTxFVYgLLexxsN2cUOP5yd0mJb6k3wU6NOi8mPZNtSfullU s7avzGHWx787no9d97XrIKKCMV8HwJjtZCt0OKFXVCYWMNMcFqVvBX2pbqgSlSBtZhzTIfi3 MYkEOY9Zgrtsh+2hP22OJuskImNEHqlYbM//OqlCGQz+4sK6Ai/3HMfKFKJ/6Oyf8j48dO12 3nPRMQAy/oBHEITGQQUK0hdDZyglGOzTHGWH2Ae33vrzs+8T9rG8GzCCBxEwggX5oAMCAQIC BEwfo4cwDQYJKoZIhvcNAQEFBQAwgYAxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRydXN0 MSIwIAYDVQQLExlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMTswOQYDVQQDEzJFbnRydXN0 IE1hbmFnZWQgU2VydmljZXMgQ29tbWVyY2lhbCBQdWJsaWMgUm9vdCBDQTAeFw0xMDA3MDcy MDE0NTRaFw0zMDA2MDcyMDQ0NTRaMHcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRydXN0 MSIwIAYDVQQLExlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMTIwMAYDVQQDEylFbnRydXN0 IEVkdWNhdGlvbiBTaGFyZWQgU2VydmljZSBQcm92aWRlcjCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAOtRQhPAzU32kb0lQD4Zbvrz4z1/uMOXoAURJ8//Dm3SQFuuG+lDwyE4 zkk85mtmqJgbGsA2cQOiv7189VBAHxgvOkc322Riwi5TKErPAk/tU9ay2Zne1S4oDeMiHp9K pgde0OcjKE7fx6PZmB/i0QWqVvm6C20cjFUcjYOs8QH79lh10w0bUuvR8/jk5FJ8Ss2cxDl2 CIB826jCZW2SKsQ1LlRSJIJ9AOfn6fr/m5aBHCEoqAkrI0zK+CT3OTtMTRzoGvyh9Wv2oWVV OjlpUdD5HtxuFrDmps4Z2ZAE3+KCpX0G183hhEKzBRIDv3eC1Wv8J2mG/s+aNRqcgLmWFQcC AwEAAaOCA5kwggOVMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMDwGA1Ud IAQ1MDMwDwYNYIZIAYb6a4FIAwoCBDAPBg1ghkgBhvprgUgDCgIFMA8GDWCGSAGG+muBSAMK AgYwggE/BggrBgEFBQcBAQSCATEwggEtMFUGCCsGAQUFBzAChklodHRwOi8vY29tcHVid2Vi Lm1hbmFnZWQuZW50cnVzdC5jb20vQUlBL0NlcnRzSXNzdWVkVG9FTVNDb21QdWJSb290Q0Eu cDdjMIHTBggrBgEFBQcwAoaBxmxkYXA6Ly9jb21wdWJzaGFkLm1hbmFnZWQuZW50cnVzdC5j b20vb3U9RW50cnVzdCUyME1hbmFnZWQlMjBTZXJ2aWNlcyUyMENvbW1lcmNpYWwlMjBQdWJs aWMlMjBSb290JTIwQ0Esb3U9Q2VydGlmaWNhdGlvbiUyMEF1dGhvcml0aWVzLG89RW50cnVz dCxjPVVTP2NBQ2VydGlmaWNhdGU7YmluYXJ5LGNyb3NzQ2VydGlmaWNhdGVQYWlyO2JpbmFy eTCCAawGA1UdHwSCAaMwggGfMIH+oIH7oIH4hj1odHRwOi8vY29tcHVid2ViLm1hbmFnZWQu ZW50cnVzdC5jb20vQ1JMcy9FTVNDb21QdWJSb290Q0EuY3JshoG2bGRhcDovL2NvbXB1YnNo YWQubWFuYWdlZC5lbnRydXN0LmNvbS9jbj1FbnRydXN0JTIwTWFuYWdlZCUyMFNlcnZpY2Vz JTIwQ29tbWVyY2lhbCUyMFB1YmxpYyUyMFJvb3QlMjBDQSxvdT1DZXJ0aWZpY2F0aW9uJTIw QXV0aG9yaXRpZXMsbz1FbnRydXN0LGM9VVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDti aW5hcnkwgZuggZiggZWkgZIwgY8xCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRydXN0MSIw IAYDVQQLExlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMTswOQYDVQQDEzJFbnRydXN0IE1h bmFnZWQgU2VydmljZXMgQ29tbWVyY2lhbCBQdWJsaWMgUm9vdCBDQTENMAsGA1UEAxMEQ1JM MTAfBgNVHSMEGDAWgBTAMkkFZmaDhxlpua6DJQYZiwXXdDAdBgNVHQ4EFgQUIt2i+lhOgz5T iwGAExY11IEVtn8wDQYJKoZIhvcNAQEFBQADggEBAHQ4kWFG0YwlCojUFLo5/Btbxr51qNZL 52Mf5QVC9O09b7YZE1ZcAUJlYxerhKPV66xQAhro9ch/VUYDKu1/qTAX5OGRH5sq5lBO2Rat B7tEyEuY3S6SWXCsJcvyi7eUrPov5Ojo0GsMymqNbdU+Uy/e3I58daQx9BzVGIGXg8iAxt+7 cG4NtiXeCOXXfjPemC/OxuzH9k6SEv16ztlnfOFBJVs5jI1iKCtKDSd74K/k3CgvBK8zEvgL jXzLgWS/pUqIv8jjhAFEu0pfxsXkpn69ORT3pw972+q+A2rg8lilyd9KIzvcpi07orohVeXn Q+67NIscURgNDDtfFRWrq3cwggfkMIIGzKADAgECAgRMICvCMA0GCSqGSIb3DQEBBQUAMHcx CzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRydXN0MSIwIAYDVQQLExlDZXJ0aWZpY2F0aW9u IEF1dGhvcml0aWVzMTIwMAYDVQQDEylFbnRydXN0IEVkdWNhdGlvbiBTaGFyZWQgU2Vydmlj ZSBQcm92aWRlcjAeFw0xMzAxMjkxNDU1MzhaFw0xODAxMjkxNTI1MzhaMIGcMQswCQYDVQQG EwJVUzESMBAGA1UECBMJV2lzY29uc2luMSAwHgYDVQQKExdVbml2ZXJzaXR5IG9mIFdpc2Nv bnNpbjEQMA4GA1UECxMHTWFkaXNvbjFFMBEGA1UEAxMKUnlhbiBFbmdlbDARBgNVBAUTCjAw MDAwMDE2NDEwHQYJKoZIhvcNAQkBFhBydGVuZ2VsQHdpc2MuZWR1MIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAmWdyht8Y814KC9bCrm8HF5X5rcu0Y2OocEzmo/E0/CJQQUNx y0FsiT2+N1CnkPz2yC5Ehr13hqpcdxxOQEhRL5I1GfBGQWe9yXxEpmSqCjtsaWnjHSyR45jX PS8BWa98hAx8+2VIcDOW2Nx5mmgfqWRxboOXt5dwazDaVQKaRpi+I0BwVN2lMnrMbhA8hi0Q m8f8JAtnKSnOl4UXpZ2yo7B6KHL7SQM7yyZUDj4bullC8wtw798yINAGLbYwkRuTor6hLiTB +a9y4usH9eVLMaQPiZYSgiROsS9XMvmrgBDCOiSdEOlc3x0/8cmOVU4POYaUJ97EinECjWck Mg68JQIDAQABo4IEUDCCBEwwDgYDVR0PAQH/BAQDAgWgMCYGA1UdJQQfMB0GCCsGAQUFBwMC BggrBgEFBQcDBAYHKwYBBQIDBDCCATMGCCsGAQUFBwEBBIIBJTCCASEwUwYIKwYBBQUHMAKG R2h0dHA6Ly9lZHVjYXRpb253ZWIubWFuYWdlZC5lbnRydXN0LmNvbS9BSUEvQ2VydHNJc3N1 ZWRUb0VNU0VkU1NQQ0EucDdjMIHJBggrBgEFBQcwAoaBvGxkYXA6Ly9lZHVjYXRpb25zaGFk Lm1hbmFnZWQuZW50cnVzdC5jb20vY249RW50cnVzdCUyMEVkdWNhdGlvbiUyMFNoYXJlZCUy MFNlcnZpY2UlMjBQcm92aWRlcixvdT1DZXJ0aWZpY2F0aW9uJTIwQXV0aG9yaXRpZXMsbz1F bnRydXN0LGM9VVM/Y0FDZXJ0aWZpY2F0ZTtiaW5hcnksY3Jvc3NDZXJ0aWZpY2F0ZVBhaXI7 YmluYXJ5MCsGA1UdIAQkMCIwDwYNYIZIAYb6a4FIAwoCBDAPBg1ghkgBhvprgUgDCgIFMFgG CWCGSAGG+mseAQRLDElUaGUgcHJpdmF0ZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGlzIGNl cnRpZmljYXRlIG1heSBoYXZlIGJlZW4gZXhwb3J0ZWQuMBsGA1UdEQQUMBKBEHJ0ZW5nZWxA d2lzYy5lZHUwggGiBgNVHR8EggGZMIIBlTCB/aCB+qCB94ZGaHR0cDovL2VkdWNhdGlvbndl Yi5tYW5hZ2VkLmVudHJ1c3QuY29tL0NSTHMvRW50cnVzdEVEVUNBVElPTlNTUENBLmNybIaB rGxkYXA6Ly9lZHVjYXRpb25zaGFkLm1hbmFnZWQuZW50cnVzdC5jb20vY249RW50cnVzdCUy MEVkdWNhdGlvbiUyMFNoYXJlZCUyMFNlcnZpY2UlMjBQcm92aWRlcixvdT1DZXJ0aWZpY2F0 aW9uJTIwQXV0aG9yaXRpZXMsbz1FbnRydXN0LGM9VVM/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdDtiaW5hcnkwgZKggY+ggYykgYkwgYYxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRy dXN0MSIwIAYDVQQLExlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMTIwMAYDVQQDEylFbnRy dXN0IEVkdWNhdGlvbiBTaGFyZWQgU2VydmljZSBQcm92aWRlcjENMAsGA1UEAxMEQ1JMMzAr BgNVHRAEJDAigA8yMDEzMDEyOTE0NTUzOFqBDzIwMTYwNzMwMTkyNTM4WjAfBgNVHSMEGDAW gBQi3aL6WE6DPlOLAYATFjXUgRW2fzAdBgNVHQ4EFgQUcXvqsasXxl6+gd8rQKt16k/Ax1sw CQYDVR0TBAIwADAZBgkqhkiG9n0HQQAEDDAKGwRWOC4xAwIEsDANBgkqhkiG9w0BAQUFAAOC AQEACoBLtFGqaKlgBQnGhIWaVqbQeMmxq1xFbrSBdVhKyeJknHfuAC41oxDDX2GthfLnX25N ut6ut68XwoRILgU4XzDhfuinGjqtGecErZHD4H0ty5xtwhUJ7RxQoZ8okvp7OcSJOplmFmBw 6KxzVRh6vWGnWuh2QbNOtaq5W8vfrIy9ttO+o2sG20rydb+Y+maGa5yH+gQD5B34ifjiql66 Q6ppICSFCGUIAu3REhic7zsWffRq//Btj1LjM5Q4V7cMTT4eriAOzUyHj4Wzs+PEa7pbNSwX JiHKl70ArmsyZxtylQvbxKc4Itfi6kUzVmkaqIj1DeOY3VmVsD8IiyBTLTGCA44wggOKAgEB MH8wdzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VudHJ1c3QxIjAgBgNVBAsTGUNlcnRpZmlj YXRpb24gQXV0aG9yaXRpZXMxMjAwBgNVBAMTKUVudHJ1c3QgRWR1Y2F0aW9uIFNoYXJlZCBT ZXJ2aWNlIFByb3ZpZGVyAgRMICvCMAkGBSsOAwIaBQCgggHkMBgGCSqGSIb3DQEJAzELBgkq hkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTE0MDYyMDIxMTkzMVowIwYJKoZIhvcNAQkEMRYE FEBgKZ/3LhzmzjMuglBUQPDpaFI/MF8GCSqGSIb3DQEJDzFSMFAwCwYJYIZIAWUDBAECMAoG CCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggq hkiG9w0DAgIBKDCBjwYJKwYBBAGCNxAEMYGBMH8wdzELMAkGA1UEBhMCVVMxEDAOBgNVBAoT B0VudHJ1c3QxIjAgBgNVBAsTGUNlcnRpZmljYXRpb24gQXV0aG9yaXRpZXMxMjAwBgNVBAMT KUVudHJ1c3QgRWR1Y2F0aW9uIFNoYXJlZCBTZXJ2aWNlIFByb3ZpZGVyAgRMICvCMIGRBgsq hkiG9w0BCRACCzGBgaB/MHcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdFbnRydXN0MSIwIAYD VQQLExlDZXJ0aWZpY2F0aW9uIEF1dGhvcml0aWVzMTIwMAYDVQQDEylFbnRydXN0IEVkdWNh dGlvbiBTaGFyZWQgU2VydmljZSBQcm92aWRlcgIETCArwjANBgkqhkiG9w0BAQEFAASCAQCR LQcubrNkpHxuG5ybKasTrYSoDPRZM/mKkogKMzIOkG/LYUIY6sBBfeqdQmBdEj3ZGOFa7WA+ 99ZJFjOk4A+n0D3CBdeB//iu1yr7/RU2rbcAJxZjNWAEzGNGX54QFXikm9kYJujx6GRClmRJ RgvGtFr6aEbSBdZj0eSaS0OJX/k7HeojIjimPF7CoEdFKtqcyGQLl2Tv5XDIKuJr7YMVCN23 kpEUUcoU6Nz0op58qkKoxwTJ+Mc1sDFP2uZtiVJmbghE/CuFZuDvS+tkSsnRGdcjpx0gjgL1 zlLOPctZu8fUqHa1rYaBGImhI+Ldc/nkWk1nytHLFXSUxSZAQP6iAAAAAAAA --------------ms000002060804070407070702--

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

April 2024
March 2024
February 2024
January 2024
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
December 2003
November 2003

ATOM RSS1 RSS2



LISTS.CLIR.ORG

CataList Email List Search Powered by the LISTSERV Email List Manager