From e68c00267044815b592ccb616e60e0f9ee641c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2?= Date: Fri, 19 Aug 2016 18:56:49 +0300 Subject: [PATCH 01/22] Genereate ack files. Init commit --- LICENSE | 1 + config_cwr/accessor.py | 12 + config_cwr/acknowledge_config_example.yml | 5 + config_cwr/field_config_common.yml | 12 +- config_cwr/field_config_table.yml | 4 +- config_cwr/group_config_common.cml | 10 +- config_cwr/record_config_common.cml | 56 +++-- config_cwr/transaction_config_common.cml | 25 +- cwr/__init__.py | 2 +- cwr/acknowledge/__init__.py | 1 + cwr/acknowledge/file.py | 206 ++++++++++++++++ cwr/grammar/factory/adapter.py | 30 ++- cwr/grammar/factory/config.py | 1 + cwr/grammar/factory/decorator.py | 2 +- cwr/grammar/factory/rule.py | 2 +- cwr/grammar/field/basic.py | 9 +- cwr/grammar/field/special.py | 4 +- cwr/group.py | 32 ++- cwr/interested_party.py | 10 + cwr/parser/decoder/common.py | 1 + cwr/parser/decoder/dictionary.py | 111 +++++++-- cwr/parser/decoder/file.py | 5 +- cwr/parser/encoder/dictionary.py | 3 + cwr/parser/encoder/file.py | 90 +++++++ cwr/parser/encoder/standart/__init__.py | 0 cwr/parser/encoder/standart/field.py | 273 ++++++++++++++++++++++ cwr/parser/encoder/standart/record.py | 218 +++++++++++++++++ cwr/transmission.py | 2 +- cwr/validation/__init__.py | 11 + cwr/validation/common.py | 45 ++++ cwr/validation/record.py | 17 ++ cwr/validation/transaction.py | 24 ++ data_cwr/cwr_isrc_country_code.csv | 2 +- 33 files changed, 1154 insertions(+), 72 deletions(-) create mode 100644 config_cwr/acknowledge_config_example.yml create mode 100644 cwr/acknowledge/__init__.py create mode 100644 cwr/acknowledge/file.py create mode 100644 cwr/parser/encoder/standart/__init__.py create mode 100644 cwr/parser/encoder/standart/field.py create mode 100644 cwr/parser/encoder/standart/record.py create mode 100644 cwr/validation/__init__.py create mode 100644 cwr/validation/common.py create mode 100644 cwr/validation/record.py create mode 100644 cwr/validation/transaction.py diff --git a/LICENSE b/LICENSE index 40fb8e3..e616b36 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ The MIT License (MIT) Copyright (c) 2014 WESO +Copyright (c) 2016 United Media Agency Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/config_cwr/accessor.py b/config_cwr/accessor.py index cd26449..3f1dcea 100644 --- a/config_cwr/accessor.py +++ b/config_cwr/accessor.py @@ -77,6 +77,7 @@ def __init__(self): self._group_configs = {} self._record_configs = {} self._transaction_configs = {} + self._acknowledge_configs = {} def _load_cwr_defaults(self): """ @@ -152,3 +153,14 @@ def default_version(self): :return: the current version of the CWR standard """ return self._load_cwr_defaults()['default_version'] + + def load_acknowledge_config(self, file_id): + """ + Loads the CWR acknowledge config + :return: the values matrix + """ + if self._cwr_defaults is None: + self._cwr_defaults = self._reader.read_yaml_file( + 'acknowledge_config_%s.yml' % file_id) + + return self._cwr_defaults diff --git a/config_cwr/acknowledge_config_example.yml b/config_cwr/acknowledge_config_example.yml new file mode 100644 index 0000000..8589343 --- /dev/null +++ b/config_cwr/acknowledge_config_example.yml @@ -0,0 +1,5 @@ + +sender_name: 'UMA EXAMPLE' +sender_id: 999 +sender_type: 'SO' +version: 2.1 \ No newline at end of file diff --git a/config_cwr/field_config_common.yml b/config_cwr/field_config_common.yml index c2a68d9..811c121 100644 --- a/config_cwr/field_config_common.yml +++ b/config_cwr/field_config_common.yml @@ -185,7 +185,7 @@ first_album_label: name: First Album Label first_album_title: - type: alphanum + type: alphanum_ext size: 60 name: First Album Title @@ -297,7 +297,7 @@ library: name: Library message_text: - type: alphanum + type: alphanum_end size: 150 name: Message Text @@ -368,7 +368,7 @@ performance_dialect: name: Dialect performing_artist_first_name: - type: alphanum + type: alphanum_end size: 30 name: Performing Artist First Name @@ -395,7 +395,7 @@ performing_artist_ipi_name_n: name: IPI Name Number performing_artist_last_name: - type: alphanum + type: alphanum_end size: 45 name: Performing Artist Last Name @@ -559,7 +559,7 @@ shares_change: name: Shares Change society_assigned_agreement_n: - type: alphanum + type: alphanum_end size: 14 name: Society Given Agreement Number @@ -594,7 +594,7 @@ submitter_creation_n: name: Submitter Creation Number submitter_work_n: - type: alphanum + type: alphanum_end size: 14 name: Submitter Work Number diff --git a/config_cwr/field_config_table.yml b/config_cwr/field_config_table.yml index 67602a5..e1c5589 100644 --- a/config_cwr/field_config_table.yml +++ b/config_cwr/field_config_table.yml @@ -60,7 +60,7 @@ media_type: message_level: type: lookup - size: 3 + size: 1 name: Message Level source: message_level @@ -72,7 +72,7 @@ message_record_type: message_type: type: lookup - size: 3 + size: 1 name: Message Type source: message_type diff --git a/config_cwr/group_config_common.cml b/config_cwr/group_config_common.cml index e2b77b4..f41a44b 100644 --- a/config_cwr/group_config_common.cml +++ b/config_cwr/group_config_common.cml @@ -13,8 +13,8 @@ group: group: transactions (optional) option [ - record: group_trailer_base - record: group_trailer_short + record: group_trailer_base + record: group_trailer_short ] ] @@ -24,9 +24,9 @@ group: [ option [ - group: agreement_transaction (grouped, at_least_1) - group: work_transaction (grouped, at_least_1) - group: acknowledgement_transaction (grouped, at_least_1) + group: agreement_transaction (grouped, at_least_1) + group: work_transaction (grouped, at_least_1) + group: acknowledgement_transaction (grouped, at_least_1) ] ] diff --git a/config_cwr/record_config_common.cml b/config_cwr/record_config_common.cml index a6c10cf..8036726 100644 --- a/config_cwr/record_config_common.cml +++ b/config_cwr/record_config_common.cml @@ -97,7 +97,6 @@ record: field: group_id field: version_number field: batch_request_id - field: sd_type ] record: @@ -293,9 +292,15 @@ transaction_record: rules: [ field: performing_artist_last_name - field: performing_artist_first_name - field: performing_artist_ipi_name_n - field: performing_artist_ipi_base_n + optional [ + field: performing_artist_first_name + ] + optional [ + field: performing_artist_ipi_name_n + ] + optional [ + field: performing_artist_ipi_base_n + ] ] transaction_record: @@ -317,14 +322,16 @@ transaction_record: field: mr_ownership_share (compulsory) field: sr_society field: sr_ownership_share (compulsory) - field: special_agreements - field: first_recording_refusal - field: blank - field: ipi_base_n - field: international_standard_code - field: society_assigned_agreement_n - field: agreement_type - field: usa_license + optional [ + field: special_agreements + field: first_recording_refusal + ] + optional [ + field: filler + field: ipi_base_n + field: international_standard_code + field: society_assigned_agreement_n + ] ] transaction_record: @@ -382,7 +389,9 @@ transaction_record: field: isrc field: recording_format field: recording_technique - field: media_type + optional [ + field: media_type + ] ] transaction_record: @@ -449,10 +458,12 @@ transaction_record: field: grand_rights_indicator field: composite_component_count field: date_publication_printed_edition - field: exceptional_clause - field: opus_number - field: catalogue_number - field: priority_flag + optional [ + field: exceptional_clause + field: opus_number + field: catalogue_number + field: priority_flag + ] ] transaction_record: @@ -513,7 +524,9 @@ transaction_record: field: episode_title field: episode_n field: year_production - field: audio_visual_key + optional [ + field: audio_visual_key + ] ] transaction_record: @@ -540,7 +553,10 @@ transaction_record: field: filler field: ipi_base_n field: personal_number - field: usa_license + optional + [ + field: usa_license + ] ] transaction_record: @@ -589,4 +605,4 @@ transaction_record: ] ] ] - ] \ No newline at end of file + ] diff --git a/config_cwr/transaction_config_common.cml b/config_cwr/transaction_config_common.cml index 2353bc2..18ecead 100644 --- a/config_cwr/transaction_config_common.cml +++ b/config_cwr/transaction_config_common.cml @@ -12,8 +12,23 @@ group: ] sequence [ - record: work - record: work_conflict (optional) + record: work + record: work_conflict (optional) + record: controlled_publisher_information (at_least_0) + record: publisher (at_least_0) + record: controlled_writer_information (at_least_0) + record: writer (at_least_0) + record: work_alternate_title (at_least_0) + record: nra_title (optional) + record: information_for_excerpts (optional) + record: information_for_versions (optional) + record: performing_artist (at_least_0) + record: nra_performance_data (at_least_0) + record: recording_detail (at_least_0) + record: work_origin (at_least_0) + record: instrumentation_information (at_least_0) + record: information_for_components (at_least_0) + record: additional_related_information (at_least_0) ] ] ] @@ -23,7 +38,7 @@ group: rules: [ record: publisher - record: nra_publisher_name (optional) + record: nra_publisher_name (at_least_0) record: publisher_territory (at_least_0) ] @@ -139,8 +154,8 @@ group: record: information_for_versions (optional) record: performing_artist (at_least_0) record: nra_performance_data (at_least_0) - record: recording_detail (optional) - record: work_origin (optional) + record: recording_detail (at_least_0) + record: work_origin (at_least_0) record: instrumentation_information (at_least_0) record: information_for_components (at_least_0) record: additional_related_information (at_least_0) diff --git a/cwr/__init__.py b/cwr/__init__.py index ed88061..7f3e9a9 100644 --- a/cwr/__init__.py +++ b/cwr/__init__.py @@ -7,5 +7,5 @@ :license: MIT, see LICENSE for more details. """ -__version__ = '0.0.33' +__version__ = '0.0.7' __license__ = 'MIT' diff --git a/cwr/acknowledge/__init__.py b/cwr/acknowledge/__init__.py new file mode 100644 index 0000000..d72da04 --- /dev/null +++ b/cwr/acknowledge/__init__.py @@ -0,0 +1 @@ +__author__ = 'yaroslav' diff --git a/cwr/acknowledge/file.py b/cwr/acknowledge/file.py new file mode 100644 index 0000000..290d027 --- /dev/null +++ b/cwr/acknowledge/file.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- + +import codecs +from datetime import date +import sys +from config_cwr.accessor import CWRConfiguration +from cwr.acknowledgement import AcknowledgementRecord, MessageRecord +from cwr.file import CWRFile, FileTag +from cwr.group import Group, GroupHeader, GroupTrailer +from cwr.parser.encoder.file import default_encoder_cwr_file + +from cwr.record import TransactionRecord +from cwr.transmission import Transmission, TransmissionTrailer, TransmissionHeader +from cwr.utils.printer import CWRPrinter +from cwr.validation.common import ValidationStatus + +""" +Class generate acknowledgement file" +""" + +__author__ = 'Yaroslav O. Golub' +__license__ = 'MIT' +__status__ = 'Development' + + +class SequenceGenerator: + def __init__(self, start=0): + self._sequence = self.generator(start) + + @staticmethod + def generator(start): + num = start + while True: + yield num + num += 1 + + def get(self): + return self._sequence.__next__() + + +class AcknowledgeFile(object): + _acknowledge = None + + config = None + + def __init__(self, config, sequence_n, reciver): + self.config = config + tag = FileTag(self._year(), sequence_n, self._sender(), reciver, self._version()) + transmission = AcknowledgeTransmission(self.config['sender_id'], + self.config['sender_name'], + self.config['sender_type']) + self._acknowledge = CWRFile(tag, transmission) + + @staticmethod + def _year(): + return date.today().year + + def _sender(self): + return self.config['sender_name'] + + @staticmethod + def _version(): + return "2.1" + + def validate_transaction(self, transaction): + return ValidationStatus('AS') + + def acknowledge_cwr_file(self, cwr_file): + assert isinstance(cwr_file, CWRFile) + for group in cwr_file.transmission.groups: + ack_group = AcknowledgeGroup(group) + for transaction in group.transactions: + status = self.validate_transaction(transaction) + ack_transaction = AcknowledgeTransaction(group.group_header.group_id, transaction, status.code, status.message) + ack_group.append_transaction(ack_transaction) + self._acknowledge.transmission.append_group(ack_group) + + def print(self, path): + output = codecs.open(path + '.ack.parsed', 'w', 'latin-1') + printer = CWRPrinter() + printer.print_file(self._acknowledge, output) + + def encode(self, path): + output = codecs.open(path + '.ack', 'w', 'latin-1') + out_old = sys.stdout + sys.stdout = output + file_encoder = default_encoder_cwr_file() + result = file_encoder.encode(self._acknowledge.transmission) + sys.stdout = out_old + + #self.acknowledge_transmission(cwr_file.transmission) + + # def acknowledge_transmission(self, transmission): + # assert isinstance(transmission, Transmission) + # for group in transmission.groups: + # ack_group = self.acknowledge_group(group) + # self._acknowledge.transmission.groups.append(ack_group) + # self._acknowledge.transmission.trailer.group_count = transmission.trailer.group_count + # + # def acknowledge_group(self, group): + # assert isinstance(group, Group) + # ack_header = GroupHeader() + # ack_group = Group() + # for transaction in group.transactions: + # self.acknowledge_transaction(transaction) + # + # def acknowledge_transaction(self, transaction): + # pass + # + # def get(self): + # return CWRFile + + +class AcknowledgeTransmission(Transmission): + group_sequence = SequenceGenerator(0) + + def __init__(self, sender_id, sender_name, sender_type): + record_type = 'HDR' + creation_date_time = date.today() + transmission_date = date.today() + header = TransmissionHeader(record_type=record_type, + sender_id=sender_id, + sender_name=sender_name, + sender_type=sender_type, + creation_date_time=creation_date_time, + transmission_date=transmission_date) + trailer = TransmissionTrailer(record_type='TRL') + super(AcknowledgeTransmission, self).__init__(header=header, trailer=trailer) + + def append_group(self, group): + assert isinstance(group, AcknowledgeGroup) + if self.groups is None: + self.groups = [] + group.group_header.group_id = self.group_sequence.get() + group.group_trailer.group_id = self.group_sequence.get() + self.groups.append(group) + self.trailer.group_count += 1 + self.trailer.transaction_count += group.group_trailer.transaction_count + self.trailer.record_count += group.group_trailer.record_count + + +class AcknowledgeGroup(Group): + transactions_sequence = SequenceGenerator(0) + + def __init__(self, original_group): + header = GroupHeader(record_type='GRH', + transaction_type='ACK', + batch_request_id=original_group.group_header.batch_request_id) + trailer = GroupTrailer(record_type='GRT') + super(AcknowledgeGroup, self).__init__(group_header=header, group_trailer=trailer) + + def append_transaction(self, transaction): + assert isinstance(transaction, AcknowledgeTransaction) + transaction.transaction_sequence_n = self.transactions_sequence.get() + self.transactions.append(transaction.records) + self.group_trailer.transaction_count += 1 + self.group_trailer.record_count += len(transaction.records) + + +class AcknowledgeTransaction(object): + record_sequence = SequenceGenerator(0) + + _transaction_sequence_n = 0 + + def __init__(self, original_group_id, transaction, status, message=''): + self._records = [] + original_transaction = transaction[0] + ack = AcknowledgementRecord(record_type='ACK', + record_sequence_n=self.record_sequence.get(), + original_group_id=original_group_id, + original_transaction_sequence_n=original_transaction.transaction_sequence_n, + original_transaction_type=original_transaction.record_type, + transaction_status=status, + creation_date_time=date.today(), + processing_date=date.today(), + creation_title=original_transaction.title, + submitter_creation_n='', + recipient_creation_n='') + self._records.append(ack) + #if message: + # records.append(MessageRecord()) + for rec in transaction: + self._records.append(rec) + + @property + def transaction_sequence_n(self): + return self._transaction_sequence_n + + @transaction_sequence_n.setter + def transaction_sequence_n(self, value): + for record in self._records: + record.transaction_sequence_n = value + self._transaction_sequence_n = value + + @property + def records(self): + return self._records + + @records.setter + def records(self, value): + self._records = value + + +def example_acknowledge_file(sequence_n, reciver): + config = CWRConfiguration() + return AcknowledgeFile(config.load_acknowledge_config('example'), sequence_n, reciver) diff --git a/cwr/grammar/factory/adapter.py b/cwr/grammar/factory/adapter.py index 8fef85e..0534549 100644 --- a/cwr/grammar/factory/adapter.py +++ b/cwr/grammar/factory/adapter.py @@ -74,7 +74,9 @@ def __init__(self): super(AlphanumAdapter, self).__init__() def get_field(self, name=None, columns=None, values=None): - return basic.alphanum(columns, name, extended=False) + field = basic.alphanum(columns, name, extended=False) + return field + class ExtendedAlphanumAdapter(FieldAdapter): @@ -99,6 +101,29 @@ def get_field(self, name=None, columns=None, values=None): return basic.alphanum(columns, name, extended=True) +class EndAlphanumAdapter(FieldAdapter): + """ + Creates the grammar for an Alphanumeric (A) field, accepting only the + specified number of characters. + + By default Alphanumeric fields accept only ASCII characters, excluding + lowercases. If the extended flag is set to True, then non-ASCII characters + are allowed, but the no ASCII lowercase constraint is kept. + + This can be a compulsory field, in which case the empty string is + disallowed. + + The text will be stripped of heading and trailing whitespaces. + """ + + def __init__(self): + super(EndAlphanumAdapter, self).__init__() + + def get_field(self, name=None, columns=None, values=None): + reg = basic.alphanum(columns, name, extended=True, isLast=True) + return reg + + class NumericAdapter(FieldAdapter): """ Creates the grammar for a Numeric (N) field, accepting only the specified @@ -309,7 +334,8 @@ def __init__(self): super(AudioVisualKeydapter, self).__init__() def get_field(self, name=None, columns=None, values=None): - return special.audio_visual_key(name=name) + field = special.audio_visual_key(name=name) + return field class CharSetAdapter(FieldAdapter): diff --git a/cwr/grammar/factory/config.py b/cwr/grammar/factory/config.py index 0a99f59..dfe87dd 100644 --- a/cwr/grammar/factory/config.py +++ b/cwr/grammar/factory/config.py @@ -79,3 +79,4 @@ pp.Group(_rule_rules_root).setResultsName('rules') rule_config_file = pp.ZeroOrMore(pp.Group(rule_config_set)) + diff --git a/cwr/grammar/factory/decorator.py b/cwr/grammar/factory/decorator.py index eefc4ff..5ebf256 100644 --- a/cwr/grammar/factory/decorator.py +++ b/cwr/grammar/factory/decorator.py @@ -115,7 +115,7 @@ def decorate(self, field_base, field_id): config['size']) adapter = self._adapters[config['type']] - if (adapter.is_numeric()): + if adapter.is_numeric(): field = self._wrap_as_optional_numeric(field, config['name'], config['size']) diff --git a/cwr/grammar/factory/rule.py b/cwr/grammar/factory/rule.py index ba6a7ea..fcc945e 100644 --- a/cwr/grammar/factory/rule.py +++ b/cwr/grammar/factory/rule.py @@ -150,8 +150,8 @@ def _build_rule(self, rule_id): rule.setName(rule_id) if self._debug: + rule.setDebugActions(False, False, False) rule.setDebug() - return rule def _process_rules(self, rules_data, strategy): diff --git a/cwr/grammar/field/basic.py b/cwr/grammar/field/basic.py index ee10e43..baf7878 100644 --- a/cwr/grammar/field/basic.py +++ b/cwr/grammar/field/basic.py @@ -48,7 +48,7 @@ """ -def alphanum(columns, name=None, extended=False): +def alphanum(columns, name=None, extended=False, isLast=False): """ Creates the grammar for an Alphanumeric (A) field, accepting only the specified number of characters. @@ -76,6 +76,9 @@ def alphanum(columns, name=None, extended=False): # Can't be empty or have negative size raise BaseException() + if isLast: + columns = str('1,' + str(columns)) + # Checks if non-ASCII characters are allowed if not extended: # The regular expression just forbids lowercase characters @@ -83,14 +86,14 @@ def alphanum(columns, name=None, extended=False): else: # The regular expression forbids lowercase characters but allows # non-ASCII characters - field = pp.Regex('([\x00-\x60]|[\x7B-\x7F]|[^\x00-\x7F]){' + + field = pp.Regex('([\x00-\x09]|[\x0E-\x60]|[\x7B-\x7F]|[^\x00-\x7F]){' + str(columns) + '}') # Parse action field.setParseAction(lambda s: s[0].strip()) # Compulsory field validation action - if columns > 0: + if columns: field.addParseAction(lambda s: _check_not_empty(s[0])) # White spaces are not removed diff --git a/cwr/grammar/field/special.py b/cwr/grammar/field/special.py index d9b4688..fb16368 100644 --- a/cwr/grammar/field/special.py +++ b/cwr/grammar/field/special.py @@ -351,14 +351,14 @@ def audio_visual_key(name=None): society_code = society_code.setName('Society Code') \ .setResultsName('society_code') - av_number = basic.alphanum(15) + av_number = basic.alphanum(15, extended=True, isLast=True) field_empty = pp.Regex('[ ]{15}') field_empty.setParseAction(pp.replaceWith('')) av_number = av_number | field_empty av_number = av_number.setName('Audio-Visual Number') \ .setResultsName('av_number') - field = pp.Group(society_code + av_number) + field = pp.Group(society_code + pp.Optional(av_number)) field.setParseAction(lambda v: _to_avi(v[0])) diff --git a/cwr/group.py b/cwr/group.py index b1b3b1f..8a1b275 100644 --- a/cwr/group.py +++ b/cwr/group.py @@ -148,7 +148,9 @@ def __init__(self, record_type='', group_id=0, transaction_count=0, - record_count=0 + record_count=0, + currency_indicator=None, + total_monetary_value=None ): """ Constructs a GroupTrailer. @@ -163,6 +165,8 @@ def __init__(self, self._group_id = group_id self._transaction_count = transaction_count self._record_count = record_count + self._currency_indicator = currency_indicator + self._total_monetary_value = total_monetary_value def __str__(self): return '%s(g:%s, t:%s)' % ( @@ -225,6 +229,32 @@ def transaction_count(self): def transaction_count(self, value): self._transaction_count = value + @property + def total_monetary_value(self): + """ + Total monetary value represented by the group. + :return: the monetary value + """ + return self._total_monetary_value + + @total_monetary_value.setter + def total_monetary_value(self, value): + self._total_monetary_value = value + + @property + def currency_indicator(self): + """ + ISO Code of the currency used for the total monetary value. ISO codes can be found in ISO 4217 table + (actually ISO 3166 country codes 2A plus the first letter of the currency of the country: + for example, USD for Dollar in US). + :return: the ISO Code + """ + return self._currency_indicator + + @currency_indicator.setter + def currency_indicator(self, value): + self._currency_indicator = value + class Group(object): """ diff --git a/cwr/interested_party.py b/cwr/interested_party.py index a3a61d2..aa38ba9 100644 --- a/cwr/interested_party.py +++ b/cwr/interested_party.py @@ -994,6 +994,7 @@ def __init__(self, transaction_sequence_n=0, record_sequence_n=0, publisher_ip_n='', + publisher_name='', writer_ip_n='', submitter_agreement_n=None, society_assigned_agreement_n=None @@ -1006,6 +1007,7 @@ def __init__(self, # Parties IDs self._publisher_ip_n = publisher_ip_n self._writer_ip_n = writer_ip_n + self._publisher_name = publisher_name # Agreement IDs self._submitter_agreement_n = submitter_agreement_n @@ -1074,6 +1076,14 @@ def writer_ip_n(self): def writer_ip_n(self, value): self._writer_ip_n = value + @property + def publisher_name(self): + return self._publisher_name + + @publisher_name.setter + def publisher_name(self, value): + self._publisher_name = value + class WriterRecord(InterestedPartyRecord): """ diff --git a/cwr/parser/decoder/common.py b/cwr/parser/decoder/common.py index 5657bb2..c527cf5 100644 --- a/cwr/parser/decoder/common.py +++ b/cwr/parser/decoder/common.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from abc import ABCMeta, abstractmethod +from pyparsing import lineno, col """ Base classes for implementing decoder parsers. diff --git a/cwr/parser/decoder/dictionary.py b/cwr/parser/decoder/dictionary.py index e86ae12..a5d3565 100644 --- a/cwr/parser/decoder/dictionary.py +++ b/cwr/parser/decoder/dictionary.py @@ -286,10 +286,21 @@ def __init__(self): super(GroupTrailerDictionaryDecoder, self).__init__() def decode(self, data): + total_monetary_value = None + if 'total_monetary_value' in data: + total_monetary_value = data['total_monetary_value'] + + currency_indicator = None + if 'currency_indicator' in data: + currency_indicator = data['currency_indicator'] + return GroupTrailer(record_type=data['record_type'], group_id=data['group_id'], transaction_count=data['transaction_count'], - record_count=data['record_count']) + record_count=data['record_count'], + currency_indicator=currency_indicator, + total_monetary_value=total_monetary_value, + ) class InterestedPartyForAgreementDictionaryDecoder(Decoder): @@ -404,8 +415,17 @@ def __init__(self, ipi_base_decoder=None): self._ipi_base_decoder = IPIBaseDictionaryDecoder() def decode(self, data): - ipi_base = self._ipi_base_decoder.decode(data[ - 'performing_artist_ipi_base_n']) + ipi_base = None + if 'performing_artist_ipi_base_n' in data: + ipi_base = self._ipi_base_decoder.decode(data['performing_artist_ipi_base_n']) + + performing_artist_first_name = '' + if 'performing_artist_first_name' in data: + performing_artist_first_name = data['performing_artist_first_name'] + + performing_artist_ipi_name_n = '' + if 'performing_artist_ipi_name_n' in data: + performing_artist_ipi_name_n = data['performing_artist_ipi_name_n'] return PerformingArtistRecord(record_type=data['record_type'], transaction_sequence_n=data[ @@ -414,10 +434,8 @@ def decode(self, data): 'record_sequence_n'], performing_artist_last_name=data[ 'performing_artist_last_name'], - performing_artist_first_name=data[ - 'performing_artist_first_name'], - performing_artist_ipi_name_n=data[ - 'performing_artist_ipi_name_n'], + performing_artist_first_name=performing_artist_first_name, + performing_artist_ipi_name_n=performing_artist_ipi_name_n, performing_artist_ipi_base_n=ipi_base) @@ -432,6 +450,7 @@ def decode(self, data): record_sequence_n=data[ 'record_sequence_n'], publisher_ip_n=data['publisher_ip_n'], + publisher_name=data['publisher_name'], writer_ip_n=data['writer_ip_n'], submitter_agreement_n=data[ 'submitter_agreement_n'], @@ -444,6 +463,10 @@ def __init__(self): super(RecordingDetailDictionaryDecoder, self).__init__() def decode(self, data): + media_type = '' + if 'media_type' in data: + media_type = data['media_type'] + return RecordingDetailRecord(record_type=data['record_type'], transaction_sequence_n=data[ 'transaction_sequence_n'], @@ -464,7 +487,7 @@ def decode(self, data): recording_format=data['recording_format'], recording_technique=data[ 'recording_technique'], - media_type=data['media_type']) + media_type=media_type) class FileDictionaryDecoder(Decoder): @@ -581,6 +604,23 @@ def __init__(self): super(WorkDictionaryDecoder, self).__init__() def decode(self, data): + + catalogue_number = '' + if 'catalogue_number' in data: + catalogue_number = data['catalogue_number'] + + exceptional_clause = '' + if 'exceptional_clause' in data: + exceptional_clause = data['exceptional_clause'] + + opus_number = '' + if 'opus_number' in data: + opus_number = data['exceptional_clause'] + + priority_flag = '' + if 'priority_flag' in data: + priority_flag = data['priority_flag'] + return WorkRecord(record_type=data['record_type'], transaction_sequence_n=data['transaction_sequence_n'], record_sequence_n=data['record_sequence_n'], @@ -605,13 +645,13 @@ def decode(self, data): iswc=data['iswc'], work_type=data['work_type'], duration=data['duration'], - catalogue_number=data['catalogue_number'], - opus_number=data['opus_number'], + catalogue_number=catalogue_number, + opus_number=opus_number, contact_id=data['contact_id'], contact_name=data['contact_name'], recorded_indicator=data['recorded_indicator'], - priority_flag=data['priority_flag'], - exceptional_clause=data['exceptional_clause'], + priority_flag=priority_flag, + exceptional_clause=exceptional_clause, grand_rights_indicator=data['grand_rights_indicator']) @@ -667,6 +707,10 @@ def __init__(self): def decode(self, data): writer = self._writer_decoder.decode(data['writer']) + usa_license = '' + if 'usa_license' in data: + usa_license = data['usa_license'] + return WriterRecord(record_type=data['record_type'], transaction_sequence_n=data[ 'transaction_sequence_n'], @@ -678,7 +722,7 @@ def decode(self, data): reversionary=data['reversionary'], first_recording_refusal=data[ 'first_recording_refusal'], - usa_license=data['usa_license'], + usa_license=usa_license, pr_society=data['pr_society'], pr_ownership_share=data['pr_ownership_share'], mr_society=data['mr_society'], @@ -816,7 +860,10 @@ def __init__(self, ipi_base_decoder=None): self._ipi_base_decoder = IPIBaseDictionaryDecoder() def decode(self, data): - ipi_base = self._ipi_base_decoder.decode(data['ipi_base_n']) + if 'ipi_base_n' in data: + ipi_base = self._ipi_base_decoder.decode(data['ipi_base_n']) + else: + ipi_base = None return Publisher(ip_n=data['ip_n'], publisher_name=data['publisher_name'], @@ -833,6 +880,30 @@ def __init__(self): def decode(self, data): publisher = self._publisher_decoder.decode(data['publisher']) + special_agreements = '' + if 'special_agreements' in data: + special_agreements = data['special_agreements'] + + first_recording_refusal = '' + if 'first_recording_refusal' in data: + first_recording_refusal = data['first_recording_refusal'] + + agreement_type = '' + if 'agreement_type' in data: + agreement_type = data['agreement_type'] + + usa_license = '' + if 'usa_license' in data: + usa_license = data['usa_license'] + + international_standard_code = '' + if 'international_standard_code' in data: + international_standard_code = data['international_standard_code'] + + society_assigned_agreement_n = '' + if 'society_assigned_agreement_n' in data: + society_assigned_agreement_n = data['society_assigned_agreement_n'] + return PublisherRecord( record_type=data['record_type'], transaction_sequence_n=data['transaction_sequence_n'], @@ -842,18 +913,18 @@ def decode(self, data): submitter_agreement_n=data['submitter_agreement_n'], publisher_type=data['publisher_type'], publisher_unknown=data['publisher_unknown'], - agreement_type=data['agreement_type'], - international_standard_code=data['international_standard_code'], - society_assigned_agreement_n=data['society_assigned_agreement_n'], pr_society=data['pr_society'], pr_ownership_share=data['pr_ownership_share'], mr_society=data['mr_society'], mr_ownership_share=data['mr_ownership_share'], sr_society=data['sr_society'], sr_ownership_share=data['sr_ownership_share'], - special_agreements=data['special_agreements'], - first_recording_refusal=data['first_recording_refusal'], - usa_license=data['usa_license']) + special_agreements=special_agreements, + first_recording_refusal=first_recording_refusal, + international_standard_code=international_standard_code, + society_assigned_agreement_n=society_assigned_agreement_n, + agreement_type=agreement_type, + usa_license=usa_license) class TableValueDictionaryDecoder(Decoder): diff --git a/cwr/parser/decoder/file.py b/cwr/parser/decoder/file.py index f2903e7..13968c5 100644 --- a/cwr/parser/decoder/file.py +++ b/cwr/parser/decoder/file.py @@ -44,7 +44,7 @@ IPIBaseNumberAdapter, IPINameNumberAdapter, ISRCAdapter, ISWCAdapter, \ LookupAdapter, LookupIntAdapter, NumericAdapter, NumericFloatAdapter, \ PercentageAdapter, TimeAdapter, VariableAlphanumAdapter, VISANAdapter, \ - YearAdapter, EAN13Adapter, AudioVisualKeydapter + YearAdapter, EAN13Adapter, AudioVisualKeydapter, EndAlphanumAdapter """ Classes for processing CWR files, creating a graph of CWR model instances from @@ -92,6 +92,8 @@ def _default_record_decoders(): AdditionalRelatedInformationDictionaryDecoder() decoders['group_header'] = GroupHeaderDictionaryDecoder() decoders['group_trailer'] = GroupTrailerDictionaryDecoder() + decoders['group_trailer_base'] = GroupTrailerDictionaryDecoder() + decoders['group_trailer_short'] = GroupTrailerDictionaryDecoder() decoders['interested_party_agreement'] = \ InterestedPartyForAgreementDictionaryDecoder() decoders['nra_agreement_party'] = \ @@ -136,6 +138,7 @@ def default_adapters(): adapters['alphanum'] = AlphanumAdapter() adapters['alphanum_ext'] = ExtendedAlphanumAdapter() + adapters['alphanum_end'] = EndAlphanumAdapter() adapters['numeric'] = NumericAdapter() adapters['boolean'] = BooleanAdapter() adapters['flag'] = FlagAdapter() diff --git a/cwr/parser/encoder/dictionary.py b/cwr/parser/encoder/dictionary.py index d015616..f90da17 100644 --- a/cwr/parser/encoder/dictionary.py +++ b/cwr/parser/encoder/dictionary.py @@ -621,6 +621,7 @@ def encode(self, record): record) encoded['publisher_ip_n'] = record.publisher_ip_n + encoded['publisher_name'] = record.publisher_name encoded[ 'society_assigned_agreement_n'] = \ record.society_assigned_agreement_n @@ -994,6 +995,8 @@ def encode(self, record): encoded['record_count'] = record.record_count encoded['record_type'] = record.record_type encoded['transaction_count'] = record.transaction_count + encoded['currency_indicator'] = record.currency_indicator + encoded['total_monetary_value'] = record.total_monetary_value return encoded diff --git a/cwr/parser/encoder/file.py b/cwr/parser/encoder/file.py index 3cb2914..2045875 100644 --- a/cwr/parser/encoder/file.py +++ b/cwr/parser/encoder/file.py @@ -1,6 +1,10 @@ # -*- coding: utf-8 -*- +from config_cwr.accessor import CWRConfiguration from cwr.parser.encoder.common import Encoder +from cwr.parser.encoder.standart.record import CwrRecordEncoderFactory +from data_cwr.accessor import CWRTables +import difflib """ Parsers for encoding CWR model classes, creating a text string for them which @@ -139,3 +143,89 @@ def encode(self, tag): rule = rule + self._ip_delimiter + receiver + ".V" + version return rule + + + +class bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + +class CwrFileEncoder(Encoder): + """ + Encodes a CWR class instance into a cwr binary format. + + """ + _counter = 0 + + content = [] + + def __init__(self, record_configs, fields_configs, content=[]): + super(CwrFileEncoder, self).__init__() + self.record_encoder_factory = CwrRecordEncoderFactory(record_configs, fields_configs) + self.content = content + + def assert_encode(self, string): + print("Line: %d" % self._counter) + source = self.content[self._counter].strip() + string = string.strip() + print(bcolors.OKBLUE + source + bcolors.ENDC + '$') + if string == source: + print(bcolors.OKGREEN + string + bcolors.ENDC + '$') + else: + print(bcolors.FAIL + string + bcolors.ENDC + '$') + for i,s in enumerate(difflib.ndiff(source, string)): + print(i, s) + raise Exception() + self._counter += 1 + + def _record_encode(self, entity): + encoder = self.record_encoder_factory.get_encoder(entity) + result = encoder.encode(entity) + if self.content: + self.assert_encode(result) + return result + + def encode(self, transmission): + """ + Encodes the data, creating a CWR structure from an instance from the + domain model. + + :param entity: the instance to encode + :return: a cwr string structure created from the received data + """ + data = '' + data += self._record_encode(transmission.header) + for group in transmission.groups: + data += self._record_encode(group.group_header) + for transaction in group.transactions: + for record in transaction: + data += self._record_encode(record) + data += self._record_encode(group.group_trailer) + data += self._record_encode(transmission.trailer) + return data + + +def default_encoder_cwr_file(content=[]): + """ + Get default encoder cwr file + :return: + """ + config = CWRConfiguration() + field_configs = config.load_field_config('table') + field_configs.update(config.load_field_config('common')) + + field_values = CWRTables() + + for entry in field_configs.values(): + if 'source' in entry: + values_id = entry['source'] + entry['values'] = field_values.get_data(values_id) + + record_configs = config.load_record_config('common') + return CwrFileEncoder(record_configs, field_configs, content=content) diff --git a/cwr/parser/encoder/standart/__init__.py b/cwr/parser/encoder/standart/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cwr/parser/encoder/standart/field.py b/cwr/parser/encoder/standart/field.py new file mode 100644 index 0000000..211881e --- /dev/null +++ b/cwr/parser/encoder/standart/field.py @@ -0,0 +1,273 @@ +# -*- coding: utf-8 -*- + +from abc import ABCMeta, abstractmethod +from cwr.parser.encoder.common import Encoder + +""" +Classes for encoding sample field into cwr format. The encoding rules are based on config files, they understand type, +length and special features such as fill empty date by zeros + +""" + +__author__ = 'Yaroslav O. Golub' +__license__ = 'MIT' +__status__ = 'Development' + + +class CwrFieldEncoder(Encoder): + """ + Abstract class for create sample handler for one field in record. Possible it can normalize data in encoding proccess + """ + __metaclass__ = ABCMeta + + _rule = None + _required = True + + def __init__(self, name, rule, required=True): + super(CwrFieldEncoder, self).__init__() + self.name = name + self._required = required + self._rule = rule + + def _blank(self): + return "".center(self._rule['size'], ' ') + + @abstractmethod + def format(self, value): + """ + Return template for perform string formatting operation + :return: format template + """ + raise NotImplementedError('The format method must be implemented') + + def expand_entity(self, entity): + """ + Search and return entity or sub entity that contain value of this field. + :param entity: + :return: entity + :raise KeyError + """ + if self.name in entity: + return entity + for key, value in entity.items(): + if isinstance(value, dict): + if self.name in value: + return value + raise KeyError("The field %s (%s) not found in %s" % (self.name, self._rule['type'], entity)) + + def encode(self, entity): + """ + Encode this + :param entity: + :return: cwr string + """ + entity = self.expand_entity(entity) + value = entity[self.name] + result = self.format(value) + return result + + def __repr__(self): + return "Field %s, size: %d, type: %s, req: %s" % \ + (self.name, self._rule['size'], self._rule['type'], self._required) + + +class DefaultCwrFieldEncoder(CwrFieldEncoder): + """ + String type encoder + """ + def format(self, value): + if value is None: + return self._blank() + tpl = "{!s:<%d}" % self._rule['size'] + return tpl.format(str(value)) + + +class NumericCwrFieldEncoder(CwrFieldEncoder): + """ + Numeric type encoder + """ + def format(self, value): + if value is None or value == '': + value = 0 + tpl = "{:0>%d}" % self._rule['size'] + return tpl.format(str(value)) + + +class NumericEmptyCwrFieldEncoder(CwrFieldEncoder): + """ + Numeric type encoder but encode to blank string when value is none + """ + def format(self, value): + if value is None or value == '': + return self._blank() + else: + tpl = "{:0>%d}" % self._rule['size'] + return tpl.format(str(value)) + + +class BooleanCwrFieldEncoder(DefaultCwrFieldEncoder): + """ + Boolean encoder + """ + def format(self, value): + return 'Y' if value else 'N' + + +class FlagCwrFieldEncoder(DefaultCwrFieldEncoder): + """ + Empty inherit class for flag encoding + """ + pass + + +class DateCwrFieldEncoder(CwrFieldEncoder): + """ + Date encoder + """ + def format(self, value): + if value is None: + fmt = "{:0>%d}" % (self._rule['size']) + return fmt.format(0) + else: + return "{:%Y%m%d}".format(value) + + +class DateTimeCwrFieldEncoder(DateCwrFieldEncoder): + """ + Datetime encoder + """ + def format(self, value): + if value is None: + fmt = "{:0>%d}" % (self._rule['size']) + return fmt.format(0) + else: + return "{:%Y%m%d%H%M%S}".format(value) + +class TimeCwrFieldEncoder(DateCwrFieldEncoder): + """ + Time encoder + """ + def format(self, value): + if value is None: + fmt = "{:0>%d}" % (self._rule['size']) + return fmt.format(0) + else: + return "{:%H%M%S}".format(value) + +class LookupCwrFieldEncoder(DefaultCwrFieldEncoder): + """ + Lookup type encoder + """ + _values = [] + + def __init__(self, name, rule, required=True, values=[]): + super(LookupCwrFieldEncoder, self).__init__(name, rule, required=required) + self.set_values(values) + + def set_values(self, values): + self._values = values + + +class LookupNumericCwrFieldEncoder(NumericEmptyCwrFieldEncoder, LookupCwrFieldEncoder): + """ + Lookup_int type encoder. Mu + """ + pass + +class BlankCwrFieldEncoder(DefaultCwrFieldEncoder): + """ + The blank type encoder + """ + def encode(self, entity): + return "".center(self._rule['size'], ' ') + + +class PercentageCwrFieldEncoder(NumericCwrFieldEncoder): + """ + Percentage type encoder + """ + def format(self, value): + if value is None or value == '': + value = 0 + else: + value = int(round(value * 100)) + return super(PercentageCwrFieldEncoder, self).format(value) + + +class IpiCwrFieldEncoder(NumericEmptyCwrFieldEncoder): + """ + """ + pass + + +class AviCwrFieldEncoder(CwrFieldEncoder): + """ + AVI decoder + """ + def format(self, value): + tpl = "{av_number!s:0>2}{society_code!s:<15}" + return tpl.format(**value) + + +class CwrFieldEncoderFactory(object): + """ + Factory for produce field encoders + """ + + def __init__(self, field_configs): + super(CwrFieldEncoderFactory, self).__init__() + self._field_configs = field_configs + + def get_field_encoder(self, name, req): + field = self._field_configs[name] + + if 'results_name' in field: + name = field['results_name'] + + field_type = field['type'] + + if field_type == 'alphanum': + return DefaultCwrFieldEncoder(name, field, req) + elif field_type == 'alphanum_ext': + return DefaultCwrFieldEncoder(name, field, req) + elif field_type == 'alphanum_end': + return DefaultCwrFieldEncoder(name, field, req) + elif field_type == 'numeric': + return NumericCwrFieldEncoder(name, field, required=req) + elif field_type == 'date': + return DateCwrFieldEncoder(name, field, required=req) + elif field_type == 'date_time': + return DateTimeCwrFieldEncoder(name, field, required=req) + elif field_type == 'time': + return TimeCwrFieldEncoder(name, field, required=req) + elif field_type == 'boolean': + return BooleanCwrFieldEncoder(name, field, required=req) + elif field_type == 'flag': + return FlagCwrFieldEncoder(name, field, required=req) + elif field_type == 'blank': + return BlankCwrFieldEncoder(name, field, required=req) + elif field_type == 'lookup': + return LookupCwrFieldEncoder(name, field, required=req, values=field['values']) + elif field_type == 'percentage': + return PercentageCwrFieldEncoder(name, field, required=req) + elif field_type == 'lookup_int': + return LookupNumericCwrFieldEncoder(name, field, required=req, values=field['values']) + elif field_type == 'ipi_base_n': + return IpiCwrFieldEncoder(name, field, required=req) + elif field_type == 'ipi_name_n': + return IpiCwrFieldEncoder(name, field, required=req) + elif field_type == 'avi': + return AviCwrFieldEncoder(name, field, required=req) + elif field_type == 'charset': + return DefaultCwrFieldEncoder(name, field, required=req) + elif field_type == 'iswc': + return DefaultCwrFieldEncoder(name, field, required=req) + elif field_type == 'ean13': + return DefaultCwrFieldEncoder(name, field, required=req) + elif field_type == 'isrc': + return DefaultCwrFieldEncoder(name, field, required=req) + elif field_type == 'visan': + return DefaultCwrFieldEncoder(name, field, required=req) + else: + raise Exception('Not found type: %s' % field_type) + return DefaultCwrFieldEncoder(name, field, req) diff --git a/cwr/parser/encoder/standart/record.py b/cwr/parser/encoder/standart/record.py new file mode 100644 index 0000000..189e2a0 --- /dev/null +++ b/cwr/parser/encoder/standart/record.py @@ -0,0 +1,218 @@ +# -*- coding: utf-8 -*- + +from abc import ABCMeta, abstractmethod +from abc import ABCMeta, abstractmethod + +from cwr.parser.encoder.standart.field import CwrFieldEncoderFactory +from cwr.parser.encoder.dictionary import FileDictionaryEncoder, TransactionRecordDictionaryEncoder, \ + TransmissionDictionaryEncoder, GroupDictionaryEncoder, TransmissionHeaderDictionaryEncoder, \ + GroupHeaderDictionaryEncoder, GroupTrailerDictionaryEncoder, TransmissionTrailerDictionaryEncoder +from cwr.parser.encoder.common import Encoder +from cwr.record import TransactionRecord +from cwr.group import GroupHeader, GroupTrailer +from cwr.transmission import TransmissionHeader, TransmissionTrailer +import json +#from data_cwr.accessor import CWRTables + +def _iso_handler(obj): + """ + Transforms an object into it's ISO format, if possible. + + If the object can't be transformed, then an error is raised for the JSON + parser. + + This is meant to be used on datetime instances, but will work with any + object having a method called isoformat. + + :param obj: object to transform into it's ISO format + :return: the ISO format of the object + """ + if hasattr(obj, 'isoformat'): + result = obj.isoformat() + else: + raise TypeError("Unserializable object {} of type {}".format(obj, + type(obj))) + + return result + +class CwrRecordEncoderException(Exception): + pass + + +class CwrRecordEncoder(Encoder): + """ + Abstract class for generate cwr string record. Uses field encoders + """ + __metaclass__ = ABCMeta + + def __init__(self, record_configs, field_configs): + super(CwrRecordEncoder, self).__init__() + self._record_configs = record_configs + self._field_encoder_factory = CwrFieldEncoderFactory(field_configs) + + @abstractmethod + def get_record_dictionary_encoder(self, entity): + """ + Get dictionary encoder + """ + raise NotImplementedError('The head method must be implemented') + + def head(self, entity): + """ + Return head of cwr string ('HDR' for example) + """ + return entity.record_type + + @staticmethod + def _get_best_result(possible_list): + if len(possible_list) < 1: + raise CwrRecordEncoderException() + else: + possible_list = sorted(possible_list, key=lambda item: -item['len']) + return possible_list[0]['result'] + + def build_field_encoders(self, rules, field_encoders=[[]], optional=False): + for field in rules: + if field.rule_type == 'field': + for row in field_encoders: + encoder = self._field_encoder_factory.get_field_encoder(field[1], optional) + row.append(encoder) + else: + if field.list_type == 'optional': + field_encoders = self.build_field_encoders(field.rules, field_encoders=field_encoders, + optional=True) + elif field.list_type == 'sequence': + field_encoders = self.build_field_encoders(field.rules, field_encoders=field_encoders, + optional=optional) + elif field.list_type == 'option': + options = [] + for row in field_encoders: + for option in field.rules: + if option.rule_type == 'field': + encoder = self._field_encoder_factory.get_field_encoder(option[1], optional) + options.append(row + [encoder]) + else: + inner = self.build_field_encoders(option.rules, field_encoders=[list(row)], optional=optional) + for t in inner: + options.append(t) + field_encoders = options + return field_encoders + + def get_record_fields_encoders(self): + field_encoders = [] + for record_config in self._record_configs: + field_encoders += self.build_field_encoders(record_config.rules, field_encoders=[[]], optional=False) + return field_encoders + + @staticmethod + def try_encode(field_encoders, entity_dict): + """ + Inner encoding and try return string from entity dictionary + :param field_encoders: + :param entity_dict: + :return: + """ + result = '' + for field_encoder in field_encoders: + try: + result += field_encoder.encode(entity_dict) + except KeyError as e: + return False + return result + + def get_entity_dict(self, entity): + dict_encoder = self.get_record_dictionary_encoder(entity) + return dict_encoder.encode(entity) + + def encode(self, entity): + """ + Generate string of cwr format for all possible combinations of fields, + accumulate and then elect the best. The best string it is who used most of all fields + :param entity: + :return: + """ + possible_results = [] + entity_dict = self.get_entity_dict(entity) + record_field_encoders = self.get_record_fields_encoders() + for field_encoders in record_field_encoders: + result = self.try_encode(field_encoders, entity_dict) + if result: + possible_results.append({'result': result, 'len': len(field_encoders)}) + cwr = self.head(entity) + self._get_best_result(possible_results) + "\r\n" + return cwr + + +class TransactionCwrRecordEncoder(CwrRecordEncoder): + + def head(self, entity): + return "{}{:0>8}{:0>8}".format(entity.record_type, entity.transaction_sequence_n, entity.record_sequence_n) + + def get_record_dictionary_encoder(self, entity): + return TransactionRecordDictionaryEncoder() + + +class GroupHeaderCwrRecordEncoder(CwrRecordEncoder): + + def get_record_dictionary_encoder(self, entity): + return GroupHeaderDictionaryEncoder() + + +class GroupTraileCwrRecordEncoder(CwrRecordEncoder): + + def get_record_dictionary_encoder(self, entity): + return GroupTrailerDictionaryEncoder() + +class TransmissionHeaderCwrRecordEncoder(CwrRecordEncoder): + + def get_record_dictionary_encoder(self, entity): + return TransmissionHeaderDictionaryEncoder() + +class TransmissionTrailerCwrRecordEncoder(CwrRecordEncoder): + + def get_record_dictionary_encoder(self, entity): + return TransmissionTrailerDictionaryEncoder() + + +class CwrRecordEncoderFactory(object): + """ + Factory for produce record encoders + """ + + def __init__(self, record_configs, field_configs): + super(CwrRecordEncoderFactory, self).__init__() + self._record_configs = self._process_record(record_configs) + self._field_configs = field_configs + + @staticmethod + def _process_record(rules): + processed = {} + for rule in rules: + for rule_id in rule.head: + if rule_id in processed: + processed[rule_id].append(rule) + else: + processed[rule_id] = [rule] + return processed + + def get_format_encoders(self, record_id): + record_config = self._record_configs[record_id] + templates = self.build_format_templates(record_config.rules, templates=[[]]) + return templates + + def get_encoder(self, entity): + if entity.record_type not in self._record_configs: + raise NameError('The record type %s not found in config %s' % entity.record_type) + record_configs = self._record_configs[entity.record_type] + if isinstance(entity, TransactionRecord): + return TransactionCwrRecordEncoder(record_configs, self._field_configs) + elif isinstance(entity, TransmissionHeader): + return TransmissionHeaderCwrRecordEncoder(record_configs, self._field_configs) + elif isinstance(entity, GroupHeader): + return GroupHeaderCwrRecordEncoder(record_configs, self._field_configs) + elif isinstance(entity, GroupTrailer): + return GroupTraileCwrRecordEncoder(record_configs, self._field_configs) + elif isinstance(entity, TransmissionTrailer): + return TransmissionTrailerCwrRecordEncoder(record_configs, self._field_configs) + else: + raise NameError('The encoder not found for entity %s' % entity.__class__.__name__) + return encoder diff --git a/cwr/transmission.py b/cwr/transmission.py index b7ddb0a..c2484ef 100644 --- a/cwr/transmission.py +++ b/cwr/transmission.py @@ -34,7 +34,7 @@ def __init__(self, creation_date_time=None, transmission_date=None, edi_standard='01.10', - character_set=None + character_set='' ): """ Constructs a TransmissionHeader. diff --git a/cwr/validation/__init__.py b/cwr/validation/__init__.py new file mode 100644 index 0000000..ed88061 --- /dev/null +++ b/cwr/validation/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +""" + CWR Data API + ~~~~~~~~~~~~ + API for Common Works Registrations. + :copyright: (c) 2015 by WESO + :license: MIT, see LICENSE for more details. +""" + +__version__ = '0.0.33' +__license__ = 'MIT' diff --git a/cwr/validation/common.py b/cwr/validation/common.py new file mode 100644 index 0000000..67fdebc --- /dev/null +++ b/cwr/validation/common.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- + +from abc import ABCMeta, abstractmethod + +""" +Base classes for implementing validation rules. + +""" + +__author__ = 'Yaroslav O. Golub' +__license__ = 'MIT' +__status__ = 'Development' + + +class ValidationStatus(object): + + status = False + + message = [] + + def __init__(self, code, message=''): + self.code = code + self.message = message + + +class Validation(object): + """ + Interface for implementing validation. This is abstract class. + """ + __metaclass__ = ABCMeta + + data = None + + def __init__(self, data): + self.data = data + + @abstractmethod + def validate(self, entity): + """ + Validate entity and return ValidationStatus + + :param entity: the instance to validate + :return: ValidationStatus class + """ + raise NotImplementedError('The validate method must be implemented') diff --git a/cwr/validation/record.py b/cwr/validation/record.py new file mode 100644 index 0000000..9f5e141 --- /dev/null +++ b/cwr/validation/record.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + + +from cwr.validation.common import Validation + +""" +Base classes for implementing validation rules. + +""" + +__author__ = 'Yaroslav O. Golub' +__license__ = 'MIT' +__status__ = 'Development' + + +class ValidationRecord(Validation): + pass diff --git a/cwr/validation/transaction.py b/cwr/validation/transaction.py new file mode 100644 index 0000000..1264570 --- /dev/null +++ b/cwr/validation/transaction.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from apt_pkg import __init__ + +from cwr.validation.common import Validation + +""" +Base classes for implementing validation rules. + +""" + +__author__ = 'Yaroslav O. Golub' +__license__ = 'MIT' +__status__ = 'Development' + + +class ValidationTransaction(Validation): + + def __init__(self): + pass + + def validate(self, transaction): + pass + + diff --git a/data_cwr/cwr_isrc_country_code.csv b/data_cwr/cwr_isrc_country_code.csv index 566b71a..57e6764 100644 --- a/data_cwr/cwr_isrc_country_code.csv +++ b/data_cwr/cwr_isrc_country_code.csv @@ -1 +1 @@ -AC,AD,AE,AF,AG,AI,AL,AM,AN,AO,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BR,BS,BT,BW,BY,BZ,CA,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GT,GU,GW,GY,HK,HN,HR,HT,HU,ID,IE,IL,IM,IN,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,Kosovo,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OECS,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,ST,SV,SY,SZ,TC,TD,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,Yugoslavia,ZA,ZM,ZW,QR,CP,DG,ZZ \ No newline at end of file +AC,AD,AE,AF,AG,AI,AL,AM,AN,AO,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BR,BS,BT,BW,BY,BZ,CA,CB,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,EM,ER,ES,EU,ET,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GT,GU,GW,GY,HK,HN,HR,HT,HU,ID,IE,IL,IM,IN,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,Kosovo,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OECS,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,ST,SV,SY,SZ,TC,TD,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UK,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,Yugoslavia,ZA,ZM,ZW,QR,QM,QZ,CP,DG,ZZ \ No newline at end of file From 5f87899341bbdd221bd9a7b8990ecc7785ff0aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2?= Date: Mon, 22 Aug 2016 19:09:53 +0300 Subject: [PATCH 02/22] Tests fixing and create simple test on cwr encoding --- config_cwr/acknowledge_config_example.yml | 2 +- config_cwr/group_config_common.cml | 6 +- config_cwr/record_config_common.cml | 4 + config_cwr/transaction_config_common.cml | 4 +- cwr/acknowledge/file.py | 4 +- cwr/grammar/factory/rule.py | 2 +- cwr/parser/decoder/dictionary.py | 35 +- cwr/parser/encoder/file.py | 31 +- tests/acknowledge/acknowledge.py | 1 + tests/acknowledge/test.cwr | 0 tests/examples/ackexample.V21 | 2574 +++++++++++++++++ .../factory/control/test_transmission.py | 1 + .../control/test_transmission_groups.py | 5 +- .../test_administrator_information.py | 3 +- tests/parser/cwrjson/encoder/test_json.py | 6 +- tests/parser/file/encoder/test_file.py | 64 + 16 files changed, 2682 insertions(+), 60 deletions(-) create mode 100644 tests/acknowledge/acknowledge.py create mode 100644 tests/acknowledge/test.cwr create mode 100644 tests/examples/ackexample.V21 create mode 100644 tests/parser/file/encoder/test_file.py diff --git a/config_cwr/acknowledge_config_example.yml b/config_cwr/acknowledge_config_example.yml index 8589343..7347bad 100644 --- a/config_cwr/acknowledge_config_example.yml +++ b/config_cwr/acknowledge_config_example.yml @@ -2,4 +2,4 @@ sender_name: 'UMA EXAMPLE' sender_id: 999 sender_type: 'SO' -version: 2.1 \ No newline at end of file +version: 2.1 diff --git a/config_cwr/group_config_common.cml b/config_cwr/group_config_common.cml index f41a44b..e059c4f 100644 --- a/config_cwr/group_config_common.cml +++ b/config_cwr/group_config_common.cml @@ -13,8 +13,8 @@ group: group: transactions (optional) option [ - record: group_trailer_base - record: group_trailer_short + record: group_trailer_base + record: group_trailer_short ] ] @@ -35,6 +35,6 @@ group: rules: [ record: transmission_header - group: groups + group: groups ( at_least_1) record: transmission_trailer ] \ No newline at end of file diff --git a/config_cwr/record_config_common.cml b/config_cwr/record_config_common.cml index 8036726..7ea5de4 100644 --- a/config_cwr/record_config_common.cml +++ b/config_cwr/record_config_common.cml @@ -332,6 +332,10 @@ transaction_record: field: international_standard_code field: society_assigned_agreement_n ] + optional [ + field: agreement_type + field: usa_license + ] ] transaction_record: diff --git a/config_cwr/transaction_config_common.cml b/config_cwr/transaction_config_common.cml index 18ecead..c59936b 100644 --- a/config_cwr/transaction_config_common.cml +++ b/config_cwr/transaction_config_common.cml @@ -12,8 +12,8 @@ group: ] sequence [ - record: work - record: work_conflict (optional) + record: work (at_least_0) + record: work_conflict (at_least_0) record: controlled_publisher_information (at_least_0) record: publisher (at_least_0) record: controlled_writer_information (at_least_0) diff --git a/cwr/acknowledge/file.py b/cwr/acknowledge/file.py index 290d027..b6c8689 100644 --- a/cwr/acknowledge/file.py +++ b/cwr/acknowledge/file.py @@ -7,7 +7,7 @@ from cwr.acknowledgement import AcknowledgementRecord, MessageRecord from cwr.file import CWRFile, FileTag from cwr.group import Group, GroupHeader, GroupTrailer -from cwr.parser.encoder.file import default_encoder_cwr_file +from cwr.parser.encoder.file import default_file_encoder from cwr.record import TransactionRecord from cwr.transmission import Transmission, TransmissionTrailer, TransmissionHeader @@ -84,7 +84,7 @@ def encode(self, path): output = codecs.open(path + '.ack', 'w', 'latin-1') out_old = sys.stdout sys.stdout = output - file_encoder = default_encoder_cwr_file() + file_encoder = default_file_encoder() result = file_encoder.encode(self._acknowledge.transmission) sys.stdout = out_old diff --git a/cwr/grammar/factory/rule.py b/cwr/grammar/factory/rule.py index fcc945e..9a2e9ee 100644 --- a/cwr/grammar/factory/rule.py +++ b/cwr/grammar/factory/rule.py @@ -150,7 +150,7 @@ def _build_rule(self, rule_id): rule.setName(rule_id) if self._debug: - rule.setDebugActions(False, False, False) + #rule.setDebugActions(False, False, False) rule.setDebug() return rule diff --git a/cwr/parser/decoder/dictionary.py b/cwr/parser/decoder/dictionary.py index a5d3565..43918d0 100644 --- a/cwr/parser/decoder/dictionary.py +++ b/cwr/parser/decoder/dictionary.py @@ -419,11 +419,11 @@ def decode(self, data): if 'performing_artist_ipi_base_n' in data: ipi_base = self._ipi_base_decoder.decode(data['performing_artist_ipi_base_n']) - performing_artist_first_name = '' + performing_artist_first_name = None if 'performing_artist_first_name' in data: performing_artist_first_name = data['performing_artist_first_name'] - performing_artist_ipi_name_n = '' + performing_artist_ipi_name_n = None if 'performing_artist_ipi_name_n' in data: performing_artist_ipi_name_n = data['performing_artist_ipi_name_n'] @@ -444,13 +444,16 @@ def __init__(self): super(PublisherForWriterDictionaryDecoder, self).__init__() def decode(self, data): + publisher_name = None + if 'publisher_name' in data: + publisher_name = data['publisher_name'] return PublisherForWriterRecord(record_type=data['record_type'], transaction_sequence_n=data[ 'transaction_sequence_n'], record_sequence_n=data[ 'record_sequence_n'], publisher_ip_n=data['publisher_ip_n'], - publisher_name=data['publisher_name'], + publisher_name=publisher_name, writer_ip_n=data['writer_ip_n'], submitter_agreement_n=data[ 'submitter_agreement_n'], @@ -463,7 +466,7 @@ def __init__(self): super(RecordingDetailDictionaryDecoder, self).__init__() def decode(self, data): - media_type = '' + media_type = None if 'media_type' in data: media_type = data['media_type'] @@ -605,19 +608,19 @@ def __init__(self): def decode(self, data): - catalogue_number = '' + catalogue_number = None if 'catalogue_number' in data: catalogue_number = data['catalogue_number'] - exceptional_clause = '' + exceptional_clause = None if 'exceptional_clause' in data: exceptional_clause = data['exceptional_clause'] - opus_number = '' + opus_number = None if 'opus_number' in data: - opus_number = data['exceptional_clause'] + opus_number = data['opus_number'] - priority_flag = '' + priority_flag = None if 'priority_flag' in data: priority_flag = data['priority_flag'] @@ -707,7 +710,7 @@ def __init__(self): def decode(self, data): writer = self._writer_decoder.decode(data['writer']) - usa_license = '' + usa_license = None if 'usa_license' in data: usa_license = data['usa_license'] @@ -880,27 +883,27 @@ def __init__(self): def decode(self, data): publisher = self._publisher_decoder.decode(data['publisher']) - special_agreements = '' + special_agreements = None if 'special_agreements' in data: special_agreements = data['special_agreements'] - first_recording_refusal = '' + first_recording_refusal = None if 'first_recording_refusal' in data: first_recording_refusal = data['first_recording_refusal'] - agreement_type = '' + agreement_type = None if 'agreement_type' in data: agreement_type = data['agreement_type'] - usa_license = '' + usa_license = None if 'usa_license' in data: usa_license = data['usa_license'] - international_standard_code = '' + international_standard_code = None if 'international_standard_code' in data: international_standard_code = data['international_standard_code'] - society_assigned_agreement_n = '' + society_assigned_agreement_n = None if 'society_assigned_agreement_n' in data: society_assigned_agreement_n = data['society_assigned_agreement_n'] diff --git a/cwr/parser/encoder/file.py b/cwr/parser/encoder/file.py index 2045875..f572949 100644 --- a/cwr/parser/encoder/file.py +++ b/cwr/parser/encoder/file.py @@ -145,17 +145,6 @@ def encode(self, tag): return rule - -class bcolors: - HEADER = '\033[95m' - OKBLUE = '\033[94m' - OKGREEN = '\033[92m' - WARNING = '\033[93m' - FAIL = '\033[91m' - ENDC = '\033[0m' - BOLD = '\033[1m' - UNDERLINE = '\033[4m' - class CwrFileEncoder(Encoder): """ Encodes a CWR class instance into a cwr binary format. @@ -170,25 +159,9 @@ def __init__(self, record_configs, fields_configs, content=[]): self.record_encoder_factory = CwrRecordEncoderFactory(record_configs, fields_configs) self.content = content - def assert_encode(self, string): - print("Line: %d" % self._counter) - source = self.content[self._counter].strip() - string = string.strip() - print(bcolors.OKBLUE + source + bcolors.ENDC + '$') - if string == source: - print(bcolors.OKGREEN + string + bcolors.ENDC + '$') - else: - print(bcolors.FAIL + string + bcolors.ENDC + '$') - for i,s in enumerate(difflib.ndiff(source, string)): - print(i, s) - raise Exception() - self._counter += 1 - def _record_encode(self, entity): encoder = self.record_encoder_factory.get_encoder(entity) result = encoder.encode(entity) - if self.content: - self.assert_encode(result) return result def encode(self, transmission): @@ -211,7 +184,7 @@ def encode(self, transmission): return data -def default_encoder_cwr_file(content=[]): +def default_file_encoder(): """ Get default encoder cwr file :return: @@ -228,4 +201,4 @@ def default_encoder_cwr_file(content=[]): entry['values'] = field_values.get_data(values_id) record_configs = config.load_record_config('common') - return CwrFileEncoder(record_configs, field_configs, content=content) + return CwrFileEncoder(record_configs, field_configs) diff --git a/tests/acknowledge/acknowledge.py b/tests/acknowledge/acknowledge.py new file mode 100644 index 0000000..d72da04 --- /dev/null +++ b/tests/acknowledge/acknowledge.py @@ -0,0 +1 @@ +__author__ = 'yaroslav' diff --git a/tests/acknowledge/test.cwr b/tests/acknowledge/test.cwr new file mode 100644 index 0000000..e69de29 diff --git a/tests/examples/ackexample.V21 b/tests/examples/ackexample.V21 new file mode 100644 index 0000000..85b4094 --- /dev/null +++ b/tests/examples/ackexample.V21 @@ -0,0 +1,2574 @@ +HDRSO000000052PRS FOR MUSIC 01.102016070119333420160701 +GRHACK0000102.100000000000 +ACK0000000000000000201606301156440000100000000NWRALIVE AND LIVING NOW 256599 250310HN 20160630AS +MSG0000000000000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000000000000002ALIVE AND LIVING NOW EN256599 T911053629300000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000000000000030101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021016660210333302103333 N +SPU00000000000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000000000000500020412 016660333303333I0056N001 +SPT000000000000000600020412 016660333303333I0442N002 +SPU00000000000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000000000000801200655 016660333303333I0528N001 +SPU00000000000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000000000001012955570 016660333303333I2109N001 +SPT000000000000001112955570 016660333303333I2127N002 +SPU00000000000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000000000001300001509 016660333303333I0028N001 +SPT000000000000001400001509 016660333303333I0044N002 +SPT000000000000001500001509 016660333303333I0052N003 +SPT000000000000001600001509 016660333303333I0096N004 +SPT000000000000001700001509 016660333303333I0196N005 +SPT000000000000001800001509 016660333303333I0212N006 +SPT000000000000001900001509 016660333303333I0308N007 +SPT000000000000002000001509 016660333303333I2111N008 +SPT000000000000002100001509 016660333303333I0388N009 +SPT000000000000002200001509 016660333303333I0454N010 +SPT000000000000002300001509 016660333303333I0470N011 +SPT000000000000002400001509 016660333303333I0659N012 +SPT000000000000002500001509 016660333303333I0662N013 +SPT000000000000002600001509 016660333303333I0670N014 +SPT000000000000002700001509 016660333303333I0690N015 +SPT000000000000002800001509 016660333303333I0780N016 +SPT000000000000002900001509 016660333303333I0800N017 +SPT000000000000003000001509 016660333303333I0894N018 +SPU00000000000000310200501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021008330210166602101666 N +SPU00000000000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000000000003300020412 008330166601666I0056N001 +SPT000000000000003400020412 008330166601666I0442N002 +SPU00000000000000350200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000000000003600057379 008330166601666I0528N001 +SPU00000000000000370200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000000000003800179554 008330166601666I2109N001 +SPT000000000000003900179554 008330166601666I2127N002 +SPU00000000000000400200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000000000004100029396 008330166601666I0028N001 +SPT000000000000004200029396 008330166601666I0044N002 +SPT000000000000004300029396 008330166601666I0052N003 +SPT000000000000004400029396 008330166601666I0096N004 +SPT000000000000004500029396 008330166601666I0196N005 +SPT000000000000004600029396 008330166601666I0212N006 +SPT000000000000004700029396 008330166601666I0308N007 +SPT000000000000004800029396 008330166601666I2111N008 +SPT000000000000004900029396 008330166601666I0388N009 +SPT000000000000005000029396 008330166601666I0454N010 +SPT000000000000005100029396 008330166601666I0470N011 +SPT000000000000005200029396 008330166601666I0659N012 +SPT000000000000005300029396 008330166601666I0662N013 +SPT000000000000005400029396 008330166601666I0670N014 +SPT000000000000005500029396 008330166601666I0690N015 +SPT000000000000005600029396 008330166601666I0780N016 +SPT000000000000005700029396 008330166601666I0800N017 +SPT000000000000005800029396 008330166601666I0894N018 +SPU00000000000000590300018888 NICKY SKOPELITIS MUSIC E 00000000000235033996 021008330210166602101666 N +SPU00000000000000600300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000000000006100020412 008330166601666I0056N001 +SPT000000000000006200020412 008330166601666I0442N002 +SPU00000000000000630300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000000000006400057379 008330166601666I0528N001 +SPU00000000000000650300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000000000006600179554 008330166601666I2109N001 +SPT000000000000006700179554 008330166601666I2127N002 +SPU00000000000000680300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000000000006900029396 008330166601666I0028N001 +SPT000000000000007000029396 008330166601666I0044N002 +SPT000000000000007100029396 008330166601666I0052N003 +SPT000000000000007200029396 008330166601666I0096N004 +SPT000000000000007300029396 008330166601666I0196N005 +SPT000000000000007400029396 008330166601666I0212N006 +SPT000000000000007500029396 008330166601666I0308N007 +SPT000000000000007600029396 008330166601666I2111N008 +SPT000000000000007700029396 008330166601666I0388N009 +SPT000000000000007800029396 008330166601666I0454N010 +SPT000000000000007900029396 008330166601666I0470N011 +SPT000000000000008000029396 008330166601666I0659N012 +SPT000000000000008100029396 008330166601666I0662N013 +SPT000000000000008200029396 008330166601666I0670N014 +SPT000000000000008300029396 008330166601666I0690N015 +SPT000000000000008400029396 008330166601666I0780N016 +SPT000000000000008500029396 008330166601666I0800N017 +SPT000000000000008600029396 008330166601666I0894N018 +OPU00000000000000870400240698 ALMOST LOADED MUSIC E 00000000000238576928 01667 01111 03334 +SWR000000000000008800240696 STIPE MICHAEL CA00000000000235492073021016660990000009900000 N 000000000000 +SWT000000000000008900240696 016660000000000I0056N001 +SWT000000000000009000240696 016660000000000I0442N002 +SWT000000000000009100240696 016660000000000I0528N003 +SWT000000000000009200240696 016660000000000I2109N004 +SWT000000000000009300240696 016660000000000I2127N005 +SWT000000000000009400240696 016660000000000I0028N006 +SWT000000000000009500240696 016660000000000I0044N007 +SWT000000000000009600240696 016660000000000I0052N008 +SWT000000000000009700240696 016660000000000I0096N009 +SWT000000000000009800240696 016660000000000I0196N010 +SWT000000000000009900240696 016660000000000I0212N011 +SWT000000000000010000240696 016660000000000I0308N012 +SWT000000000000010100240696 016660000000000I2111N013 +SWT000000000000010200240696 016660000000000I0388N014 +SWT000000000000010300240696 016660000000000I0454N015 +SWT000000000000010400240696 016660000000000I0470N016 +SWT000000000000010500240696 016660000000000I0659N017 +SWT000000000000010600240696 016660000000000I0662N018 +SWT000000000000010700240696 016660000000000I0670N019 +SWT000000000000010800240696 016660000000000I0690N020 +SWT000000000000010900240696 016660000000000I0780N021 +SWT000000000000011000240696 016660000000000I0800N022 +SWT000000000000011100240696 016660000000000I0894N023 +PWR000000000000011201283329 NIGHT GARDEN MUSIC 00240696 +SWR000000000000011312449220 SKOPELITIS NICKY CA00000000000144926561021016660990000009900000 N 000000000000 +SWT000000000000011412449220 016660000000000I0056N001 +SWT000000000000011512449220 016660000000000I0442N002 +SWT000000000000011612449220 016660000000000I0528N003 +SWT000000000000011712449220 016660000000000I2109N004 +SWT000000000000011812449220 016660000000000I2127N005 +SWT000000000000011912449220 016660000000000I0028N006 +SWT000000000000012012449220 016660000000000I0044N007 +SWT000000000000012112449220 016660000000000I0052N008 +SWT000000000000012212449220 016660000000000I0096N009 +SWT000000000000012312449220 016660000000000I0196N010 +SWT000000000000012412449220 016660000000000I0212N011 +SWT000000000000012512449220 016660000000000I0308N012 +SWT000000000000012612449220 016660000000000I2111N013 +SWT000000000000012712449220 016660000000000I0388N014 +SWT000000000000012812449220 016660000000000I0454N015 +SWT000000000000012912449220 016660000000000I0470N016 +SWT000000000000013012449220 016660000000000I0659N017 +SWT000000000000013112449220 016660000000000I0662N018 +SWT000000000000013212449220 016660000000000I0670N019 +SWT000000000000013312449220 016660000000000I0690N020 +SWT000000000000013412449220 016660000000000I0780N021 +SWT000000000000013512449220 016660000000000I0800N022 +SWT000000000000013612449220 016660000000000I0894N023 +PWR000000000000013700501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 12449220 +PWR000000000000013800018888 NICKY SKOPELITIS MUSIC 12449220 +OWR000000000000013912103505 FIER ANTON JOHN CA00000000000208650284 01667 02222 00000 000000000000 +PER0000000000000140THE GOLDEN PALOMINOS +REC000000000000014119910917 000000 DRUNK WITH PASSION ONE UP AU +REC000000000000014200000000 000000 GBAAA0800736AU +ACK0000000100000000201606301156440000100000001NWRANGEL AND THE ASS 061758 250310HP 20160630AS +NWR0000000100000001ANGEL AND THE ASS EN061758 T700165262819980623 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000001000000020100501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021004170210083402100834 N +SPU00000001000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000010000000400020412 004170083400834I0056N001 +SPT000000010000000500020412 004170083400834I0442N002 +SPU00000001000000060100057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000010000000700057379 004170083400834I0528N001 +SPU00000001000000080100179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000010000000900179554 004170083400834I2109N001 +SPT000000010000001000179554 004170083400834I2127N002 +SPU00000001000000110100029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000010000001200029396 004170083400834I0028N001 +SPT000000010000001300029396 004170083400834I0044N002 +SPT000000010000001400029396 004170083400834I0052N003 +SPT000000010000001500029396 004170083400834I0096N004 +SPT000000010000001600029396 004170083400834I0196N005 +SPT000000010000001700029396 004170083400834I0212N006 +SPT000000010000001800029396 004170083400834I0308N007 +SPT000000010000001900029396 004170083400834I2111N008 +SPT000000010000002000029396 004170083400834I0388N009 +SPT000000010000002100029396 004170083400834I0454N010 +SPT000000010000002200029396 004170083400834I0470N011 +SPT000000010000002300029396 004170083400834I0659N012 +SPT000000010000002400029396 004170083400834I0662N013 +SPT000000010000002500029396 004170083400834I0670N014 +SPT000000010000002600029396 004170083400834I0690N015 +SPT000000010000002700029396 004170083400834I0780N016 +SPT000000010000002800029396 004170083400834I0800N017 +SPT000000010000002900029396 004170083400834I0894N018 +SPU00000001000000300200223119 SUB POP SONGS E 00000000000196616827 021004160210083302100833 N +SPU00000001000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000010000003200020412 004160083300833I0056N001 +SPT000000010000003300020412 004160083300833I0442N002 +SPU00000001000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000010000003500057379 004160083300833I0528N001 +SPU00000001000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000010000003700179554 004160083300833I2109N001 +SPT000000010000003800179554 004160083300833I2127N002 +SPU00000001000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000010000004000029396 004160083300833I0028N001 +SPT000000010000004100029396 004160083300833I0044N002 +SPT000000010000004200029396 004160083300833I0052N003 +SPT000000010000004300029396 004160083300833I0096N004 +SPT000000010000004400029396 004160083300833I0196N005 +SPT000000010000004500029396 004160083300833I0212N006 +SPT000000010000004600029396 004160083300833I0308N007 +SPT000000010000004700029396 004160083300833I2111N008 +SPT000000010000004800029396 004160083300833I0388N009 +SPT000000010000004900029396 004160083300833I0454N010 +SPT000000010000005000029396 004160083300833I0470N011 +SPT000000010000005100029396 004160083300833I0659N012 +SPT000000010000005200029396 004160083300833I0662N013 +SPT000000010000005300029396 004160083300833I0670N014 +SPT000000010000005400029396 004160083300833I0690N015 +SPT000000010000005500029396 004160083300833I0780N016 +SPT000000010000005600029396 004160083300833I0800N017 +SPT000000010000005700029396 004160083300833I0894N018 +SPU00000001000000580300223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021008330210166702101667 N +SPU00000001000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000010000006000020412 008330166701667I0056N001 +SPT000000010000006100020412 008330166701667I0442N002 +SPU00000001000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000010000006300057379 008330166701667I0528N001 +SPU00000001000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000010000006500179554 008330166701667I2109N001 +SPT000000010000006600179554 008330166701667I2127N002 +SPU00000001000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000010000006800029396 008330166701667I0028N001 +SPT000000010000006900029396 008330166701667I0044N002 +SPT000000010000007000029396 008330166701667I0052N003 +SPT000000010000007100029396 008330166701667I0096N004 +SPT000000010000007200029396 008330166701667I0196N005 +SPT000000010000007300029396 008330166701667I0212N006 +SPT000000010000007400029396 008330166701667I0308N007 +SPT000000010000007500029396 008330166701667I2111N008 +SPT000000010000007600029396 008330166701667I0388N009 +SPT000000010000007700029396 008330166701667I0454N010 +SPT000000010000007800029396 008330166701667I0470N011 +SPT000000010000007900029396 008330166701667I0659N012 +SPT000000010000008000029396 008330166701667I0662N013 +SPT000000010000008100029396 008330166701667I0670N014 +SPT000000010000008200029396 008330166701667I0690N015 +SPT000000010000008300029396 008330166701667I0780N016 +SPT000000010000008400029396 008330166701667I0800N017 +SPT000000010000008500029396 008330166701667I0894N018 +SPU00000001000000860412445809 TEMPORARY MUSIC E 00000000000197915025 021016660210333302103333 N +SPU00000001000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000010000008800020412 016660333303333I0056N001 +SPT000000010000008900020412 016660333303333I0442N002 +SPU00000001000000900401200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000010000009101200655 016660333303333I0528N001 +SPU00000001000000920412955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000010000009312955570 016660333303333I2109N001 +SPT000000010000009412955570 016660333303333I2127N002 +SPU00000001000000950400001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000010000009600001509 016660333303333I0028N001 +SPT000000010000009700001509 016660333303333I0044N002 +SPT000000010000009800001509 016660333303333I0052N003 +SPT000000010000009900001509 016660333303333I0096N004 +SPT000000010000010000001509 016660333303333I0196N005 +SPT000000010000010100001509 016660333303333I0212N006 +SPT000000010000010200001509 016660333303333I0308N007 +SPT000000010000010300001509 016660333303333I2111N008 +SPT000000010000010400001509 016660333303333I0388N009 +SPT000000010000010500001509 016660333303333I0454N010 +SPT000000010000010600001509 016660333303333I0470N011 +SPT000000010000010700001509 016660333303333I0659N012 +SPT000000010000010800001509 016660333303333I0662N013 +SPT000000010000010900001509 016660333303333I0670N014 +SPT000000010000011000001509 016660333303333I0690N015 +SPT000000010000011100001509 016660333303333I0780N016 +SPT000000010000011200001509 016660333303333I0800N017 +SPT000000010000011300001509 016660333303333I0894N018 +OPU00000001000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01666 03333 03333 +SWR000000010000011500097741 BUCK PETER LAWRENCE C 00000000000008715000021016660210000002100000 N 000000000000 +SWT000000010000011600097741 016660000000000I0056N001 +SWT000000010000011700097741 016660000000000I0442N002 +SWT000000010000011800097741 016660000000000I0528N003 +SWT000000010000011900097741 016660000000000I2109N004 +SWT000000010000012000097741 016660000000000I2127N005 +SWT000000010000012100097741 016660000000000I0028N006 +SWT000000010000012200097741 016660000000000I0044N007 +SWT000000010000012300097741 016660000000000I0052N008 +SWT000000010000012400097741 016660000000000I0096N009 +SWT000000010000012500097741 016660000000000I0196N010 +SWT000000010000012600097741 016660000000000I0212N011 +SWT000000010000012700097741 016660000000000I0308N012 +SWT000000010000012800097741 016660000000000I2111N013 +SWT000000010000012900097741 016660000000000I0388N014 +SWT000000010000013000097741 016660000000000I0454N015 +SWT000000010000013100097741 016660000000000I0470N016 +SWT000000010000013200097741 016660000000000I0659N017 +SWT000000010000013300097741 016660000000000I0662N018 +SWT000000010000013400097741 016660000000000I0670N019 +SWT000000010000013500097741 016660000000000I0690N020 +SWT000000010000013600097741 016660000000000I0780N021 +SWT000000010000013700097741 016660000000000I0800N022 +SWT000000010000013800097741 016660000000000I0894N023 +PWR000000010000013912445809 TEMPORARY MUSIC 00097741 +SWR000000010000014000224132 HARWOOD JUSTIN C 00000000000183545848021016670210000002100000 N 000000000000 +SWT000000010000014100224132 016670000000000I0056N001 +SWT000000010000014200224132 016670000000000I0442N002 +SWT000000010000014300224132 016670000000000I0528N003 +SWT000000010000014400224132 016670000000000I2109N004 +SWT000000010000014500224132 016670000000000I2127N005 +SWT000000010000014600224132 016670000000000I0028N006 +SWT000000010000014700224132 016670000000000I0044N007 +SWT000000010000014800224132 016670000000000I0052N008 +SWT000000010000014900224132 016670000000000I0096N009 +SWT000000010000015000224132 016670000000000I0196N010 +SWT000000010000015100224132 016670000000000I0212N011 +SWT000000010000015200224132 016670000000000I0308N012 +SWT000000010000015300224132 016670000000000I2111N013 +SWT000000010000015400224132 016670000000000I0388N014 +SWT000000010000015500224132 016670000000000I0454N015 +SWT000000010000015600224132 016670000000000I0470N016 +SWT000000010000015700224132 016670000000000I0659N017 +SWT000000010000015800224132 016670000000000I0662N018 +SWT000000010000015900224132 016670000000000I0670N019 +SWT000000010000016000224132 016670000000000I0690N020 +SWT000000010000016100224132 016670000000000I0780N021 +SWT000000010000016200224132 016670000000000I0800N022 +SWT000000010000016300224132 016670000000000I0894N023 +PWR000000010000016400501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000010000016500223119 SUB POP SONGS 00224132 +PWR000000010000016600223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000010000016700223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01666 00000 00000 000000000000 +PER0000000100000168TUATARA +REC000000010000016919980623 000000 TRADING WITH THE ENEMY WORLD-EPIC 68850 AU +REC000000010000017000000000 000000 USSM19703931AU +ACK0000000200000000201606301156440000100000002NWRTHE DESERT SKY 105838 250310HQ 20160630AS +NWR0000000200000001THE DESERT SKY EN105838 T914011859819970403 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000002000000020101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021012500210250002102500 N +SPU00000002000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000020000000400020412 012500250002500I0056N001 +SPT000000020000000500020412 012500250002500I0442N002 +SPU00000002000000060101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000020000000701200655 012500250002500I0528N001 +SPU00000002000000080112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000020000000912955570 012500250002500I2109N001 +SPT000000020000001012955570 012500250002500I2127N002 +SPU00000002000000110100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000020000001200001509 012500250002500I0028N001 +SPT000000020000001300001509 012500250002500I0044N002 +SPT000000020000001400001509 012500250002500I0052N003 +SPT000000020000001500001509 012500250002500I0096N004 +SPT000000020000001600001509 012500250002500I0196N005 +SPT000000020000001700001509 012500250002500I0212N006 +SPT000000020000001800001509 012500250002500I0308N007 +SPT000000020000001900001509 012500250002500I2111N008 +SPT000000020000002000001509 012500250002500I0388N009 +SPT000000020000002100001509 012500250002500I0454N010 +SPT000000020000002200001509 012500250002500I0470N011 +SPT000000020000002300001509 012500250002500I0659N012 +SPT000000020000002400001509 012500250002500I0662N013 +SPT000000020000002500001509 012500250002500I0670N014 +SPT000000020000002600001509 012500250002500I0690N015 +SPT000000020000002700001509 012500250002500I0780N016 +SPT000000020000002800001509 012500250002500I0800N017 +SPT000000020000002900001509 012500250002500I0894N018 +SPU00000002000000300200501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021003120210062502100625 N +SPU00000002000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000020000003200020412 003120062500625I0056N001 +SPT000000020000003300020412 003120062500625I0442N002 +SPU00000002000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000020000003500057379 003120062500625I0528N001 +SPU00000002000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000020000003700179554 003120062500625I2109N001 +SPT000000020000003800179554 003120062500625I2127N002 +SPU00000002000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000020000004000029396 003120062500625I0028N001 +SPT000000020000004100029396 003120062500625I0044N002 +SPT000000020000004200029396 003120062500625I0052N003 +SPT000000020000004300029396 003120062500625I0096N004 +SPT000000020000004400029396 003120062500625I0196N005 +SPT000000020000004500029396 003120062500625I0212N006 +SPT000000020000004600029396 003120062500625I0308N007 +SPT000000020000004700029396 003120062500625I2111N008 +SPT000000020000004800029396 003120062500625I0388N009 +SPT000000020000004900029396 003120062500625I0454N010 +SPT000000020000005000029396 003120062500625I0470N011 +SPT000000020000005100029396 003120062500625I0659N012 +SPT000000020000005200029396 003120062500625I0662N013 +SPT000000020000005300029396 003120062500625I0670N014 +SPT000000020000005400029396 003120062500625I0690N015 +SPT000000020000005500029396 003120062500625I0780N016 +SPT000000020000005600029396 003120062500625I0800N017 +SPT000000020000005700029396 003120062500625I0894N018 +SPU00000002000000580300223119 SUB POP SONGS E 00000000000196616827 021003120210062502100625 N +SPU00000002000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000020000006000020412 003120062500625I0056N001 +SPT000000020000006100020412 003120062500625I0442N002 +SPU00000002000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000020000006300057379 003120062500625I0528N001 +SPU00000002000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000020000006500179554 003120062500625I2109N001 +SPT000000020000006600179554 003120062500625I2127N002 +SPU00000002000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000020000006800029396 003120062500625I0028N001 +SPT000000020000006900029396 003120062500625I0044N002 +SPT000000020000007000029396 003120062500625I0052N003 +SPT000000020000007100029396 003120062500625I0096N004 +SPT000000020000007200029396 003120062500625I0196N005 +SPT000000020000007300029396 003120062500625I0212N006 +SPT000000020000007400029396 003120062500625I0308N007 +SPT000000020000007500029396 003120062500625I2111N008 +SPT000000020000007600029396 003120062500625I0388N009 +SPT000000020000007700029396 003120062500625I0454N010 +SPT000000020000007800029396 003120062500625I0470N011 +SPT000000020000007900029396 003120062500625I0659N012 +SPT000000020000008000029396 003120062500625I0662N013 +SPT000000020000008100029396 003120062500625I0670N014 +SPT000000020000008200029396 003120062500625I0690N015 +SPT000000020000008300029396 003120062500625I0780N016 +SPT000000020000008400029396 003120062500625I0800N017 +SPT000000020000008500029396 003120062500625I0894N018 +SPU00000002000000860400223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021006250210125002101250 N +SPU00000002000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000020000008800020412 006250125001250I0056N001 +SPT000000020000008900020412 006250125001250I0442N002 +SPU00000002000000900400057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000020000009100057379 006250125001250I0528N001 +SPU00000002000000920400179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000020000009300179554 006250125001250I2109N001 +SPT000000020000009400179554 006250125001250I2127N002 +SPU00000002000000950400029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000020000009600029396 006250125001250I0028N001 +SPT000000020000009700029396 006250125001250I0044N002 +SPT000000020000009800029396 006250125001250I0052N003 +SPT000000020000009900029396 006250125001250I0096N004 +SPT000000020000010000029396 006250125001250I0196N005 +SPT000000020000010100029396 006250125001250I0212N006 +SPT000000020000010200029396 006250125001250I0308N007 +SPT000000020000010300029396 006250125001250I2111N008 +SPT000000020000010400029396 006250125001250I0388N009 +SPT000000020000010500029396 006250125001250I0454N010 +SPT000000020000010600029396 006250125001250I0470N011 +SPT000000020000010700029396 006250125001250I0659N012 +SPT000000020000010800029396 006250125001250I0662N013 +SPT000000020000010900029396 006250125001250I0670N014 +SPT000000020000011000029396 006250125001250I0690N015 +SPT000000020000011100029396 006250125001250I0780N016 +SPT000000020000011200029396 006250125001250I0800N017 +SPT000000020000011300029396 006250125001250I0894N018 +OPU00000002000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01250 02500 02500 +OPU000000020000011506 YE 00000000000288936892 01250 02500 02500 +SWR000000020000011600097741 BUCK PETER LAWRENCE C 00000000000008715000021012500210000002100000 N 000000000000 +SWT000000020000011700097741 012500000000000I0056N001 +SWT000000020000011800097741 012500000000000I0442N002 +SWT000000020000011900097741 012500000000000I0528N003 +SWT000000020000012000097741 012500000000000I2109N004 +SWT000000020000012100097741 012500000000000I2127N005 +SWT000000020000012200097741 012500000000000I0028N006 +SWT000000020000012300097741 012500000000000I0044N007 +SWT000000020000012400097741 012500000000000I0052N008 +SWT000000020000012500097741 012500000000000I0096N009 +SWT000000020000012600097741 012500000000000I0196N010 +SWT000000020000012700097741 012500000000000I0212N011 +SWT000000020000012800097741 012500000000000I0308N012 +SWT000000020000012900097741 012500000000000I2111N013 +SWT000000020000013000097741 012500000000000I0388N014 +SWT000000020000013100097741 012500000000000I0454N015 +SWT000000020000013200097741 012500000000000I0470N016 +SWT000000020000013300097741 012500000000000I0659N017 +SWT000000020000013400097741 012500000000000I0662N018 +SWT000000020000013500097741 012500000000000I0670N019 +SWT000000020000013600097741 012500000000000I0690N020 +SWT000000020000013700097741 012500000000000I0780N021 +SWT000000020000013800097741 012500000000000I0800N022 +SWT000000020000013900097741 012500000000000I0894N023 +PWR000000020000014001283329 NIGHT GARDEN MUSIC 00097741 +SWR000000020000014100224132 HARWOOD JUSTIN C 00000000000183545848021012500210000002100000 N 000000000000 +SWT000000020000014200224132 012500000000000I0056N001 +SWT000000020000014300224132 012500000000000I0442N002 +SWT000000020000014400224132 012500000000000I0528N003 +SWT000000020000014500224132 012500000000000I2109N004 +SWT000000020000014600224132 012500000000000I2127N005 +SWT000000020000014700224132 012500000000000I0028N006 +SWT000000020000014800224132 012500000000000I0044N007 +SWT000000020000014900224132 012500000000000I0052N008 +SWT000000020000015000224132 012500000000000I0096N009 +SWT000000020000015100224132 012500000000000I0196N010 +SWT000000020000015200224132 012500000000000I0212N011 +SWT000000020000015300224132 012500000000000I0308N012 +SWT000000020000015400224132 012500000000000I2111N013 +SWT000000020000015500224132 012500000000000I0388N014 +SWT000000020000015600224132 012500000000000I0454N015 +SWT000000020000015700224132 012500000000000I0470N016 +SWT000000020000015800224132 012500000000000I0659N017 +SWT000000020000015900224132 012500000000000I0662N018 +SWT000000020000016000224132 012500000000000I0670N019 +SWT000000020000016100224132 012500000000000I0690N020 +SWT000000020000016200224132 012500000000000I0780N021 +SWT000000020000016300224132 012500000000000I0800N022 +SWT000000020000016400224132 012500000000000I0894N023 +PWR000000020000016500501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000020000016600223119 SUB POP SONGS 00224132 +PWR000000020000016700223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000020000016800223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01250 00000 00000 000000000000 +OWR000000020000016900103009 WALTON ERIC CA00000000000186574821 01250 00000 00000 000000000000 +PER0000000200000170TUATARA +REC000000020000017119970403 000000 BREAKING THE ETHERS EPIC 067908 AU +ACK0000000300000000201606301156440000100000003NWREASTERN STAR 105831 250310HR 20160630AS +NWR0000000300000001EASTERN STAR EN105831 T914011004919970403 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000003000000020100501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021004170210083402100834 N +SPU00000003000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000030000000400020412 004170083400834I0056N001 +SPT000000030000000500020412 004170083400834I0442N002 +SPU00000003000000060100057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000030000000700057379 004170083400834I0528N001 +SPU00000003000000080100179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000030000000900179554 004170083400834I2109N001 +SPT000000030000001000179554 004170083400834I2127N002 +SPU00000003000000110100029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000030000001200029396 004170083400834I0028N001 +SPT000000030000001300029396 004170083400834I0044N002 +SPT000000030000001400029396 004170083400834I0052N003 +SPT000000030000001500029396 004170083400834I0096N004 +SPT000000030000001600029396 004170083400834I0196N005 +SPT000000030000001700029396 004170083400834I0212N006 +SPT000000030000001800029396 004170083400834I0308N007 +SPT000000030000001900029396 004170083400834I2111N008 +SPT000000030000002000029396 004170083400834I0388N009 +SPT000000030000002100029396 004170083400834I0454N010 +SPT000000030000002200029396 004170083400834I0470N011 +SPT000000030000002300029396 004170083400834I0659N012 +SPT000000030000002400029396 004170083400834I0662N013 +SPT000000030000002500029396 004170083400834I0670N014 +SPT000000030000002600029396 004170083400834I0690N015 +SPT000000030000002700029396 004170083400834I0780N016 +SPT000000030000002800029396 004170083400834I0800N017 +SPT000000030000002900029396 004170083400834I0894N018 +SPU00000003000000300200223119 SUB POP SONGS E 00000000000196616827 021004160210083302100833 N +SPU00000003000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000030000003200020412 004160083300833I0056N001 +SPT000000030000003300020412 004160083300833I0442N002 +SPU00000003000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000030000003500057379 004160083300833I0528N001 +SPU00000003000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000030000003700179554 004160083300833I2109N001 +SPT000000030000003800179554 004160083300833I2127N002 +SPU00000003000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000030000004000029396 004160083300833I0028N001 +SPT000000030000004100029396 004160083300833I0044N002 +SPT000000030000004200029396 004160083300833I0052N003 +SPT000000030000004300029396 004160083300833I0096N004 +SPT000000030000004400029396 004160083300833I0196N005 +SPT000000030000004500029396 004160083300833I0212N006 +SPT000000030000004600029396 004160083300833I0308N007 +SPT000000030000004700029396 004160083300833I2111N008 +SPT000000030000004800029396 004160083300833I0388N009 +SPT000000030000004900029396 004160083300833I0454N010 +SPT000000030000005000029396 004160083300833I0470N011 +SPT000000030000005100029396 004160083300833I0659N012 +SPT000000030000005200029396 004160083300833I0662N013 +SPT000000030000005300029396 004160083300833I0670N014 +SPT000000030000005400029396 004160083300833I0690N015 +SPT000000030000005500029396 004160083300833I0780N016 +SPT000000030000005600029396 004160083300833I0800N017 +SPT000000030000005700029396 004160083300833I0894N018 +SPU00000003000000580300223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021008330210166702101667 N +SPU00000003000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000030000006000020412 008330166701667I0056N001 +SPT000000030000006100020412 008330166701667I0442N002 +SPU00000003000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000030000006300057379 008330166701667I0528N001 +SPU00000003000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000030000006500179554 008330166701667I2109N001 +SPT000000030000006600179554 008330166701667I2127N002 +SPU00000003000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000030000006800029396 008330166701667I0028N001 +SPT000000030000006900029396 008330166701667I0044N002 +SPT000000030000007000029396 008330166701667I0052N003 +SPT000000030000007100029396 008330166701667I0096N004 +SPT000000030000007200029396 008330166701667I0196N005 +SPT000000030000007300029396 008330166701667I0212N006 +SPT000000030000007400029396 008330166701667I0308N007 +SPT000000030000007500029396 008330166701667I2111N008 +SPT000000030000007600029396 008330166701667I0388N009 +SPT000000030000007700029396 008330166701667I0454N010 +SPT000000030000007800029396 008330166701667I0470N011 +SPT000000030000007900029396 008330166701667I0659N012 +SPT000000030000008000029396 008330166701667I0662N013 +SPT000000030000008100029396 008330166701667I0670N014 +SPT000000030000008200029396 008330166701667I0690N015 +SPT000000030000008300029396 008330166701667I0780N016 +SPT000000030000008400029396 008330166701667I0800N017 +SPT000000030000008500029396 008330166701667I0894N018 +SPU00000003000000860401283329 NIGHT GARDEN MUSIC E 00000000000130046332 021016660210333302103333 N +SPU00000003000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000030000008800020412 016660333303333I0056N001 +SPT000000030000008900020412 016660333303333I0442N002 +SPU00000003000000900401200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000030000009101200655 016660333303333I0528N001 +SPU00000003000000920412955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000030000009312955570 016660333303333I2109N001 +SPT000000030000009412955570 016660333303333I2127N002 +SPU00000003000000950400001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000030000009600001509 016660333303333I0028N001 +SPT000000030000009700001509 016660333303333I0044N002 +SPT000000030000009800001509 016660333303333I0052N003 +SPT000000030000009900001509 016660333303333I0096N004 +SPT000000030000010000001509 016660333303333I0196N005 +SPT000000030000010100001509 016660333303333I0212N006 +SPT000000030000010200001509 016660333303333I0308N007 +SPT000000030000010300001509 016660333303333I2111N008 +SPT000000030000010400001509 016660333303333I0388N009 +SPT000000030000010500001509 016660333303333I0454N010 +SPT000000030000010600001509 016660333303333I0470N011 +SPT000000030000010700001509 016660333303333I0659N012 +SPT000000030000010800001509 016660333303333I0662N013 +SPT000000030000010900001509 016660333303333I0670N014 +SPT000000030000011000001509 016660333303333I0690N015 +SPT000000030000011100001509 016660333303333I0780N016 +SPT000000030000011200001509 016660333303333I0800N017 +SPT000000030000011300001509 016660333303333I0894N018 +OPU00000003000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01666 03333 03333 +SWR000000030000011500097741 BUCK PETER LAWRENCE C 00000000000008715000021016660210000002100000 N 000000000000 +SWT000000030000011600097741 016660000000000I0056N001 +SWT000000030000011700097741 016660000000000I0442N002 +SWT000000030000011800097741 016660000000000I0528N003 +SWT000000030000011900097741 016660000000000I2109N004 +SWT000000030000012000097741 016660000000000I2127N005 +SWT000000030000012100097741 016660000000000I0028N006 +SWT000000030000012200097741 016660000000000I0044N007 +SWT000000030000012300097741 016660000000000I0052N008 +SWT000000030000012400097741 016660000000000I0096N009 +SWT000000030000012500097741 016660000000000I0196N010 +SWT000000030000012600097741 016660000000000I0212N011 +SWT000000030000012700097741 016660000000000I0308N012 +SWT000000030000012800097741 016660000000000I2111N013 +SWT000000030000012900097741 016660000000000I0388N014 +SWT000000030000013000097741 016660000000000I0454N015 +SWT000000030000013100097741 016660000000000I0470N016 +SWT000000030000013200097741 016660000000000I0659N017 +SWT000000030000013300097741 016660000000000I0662N018 +SWT000000030000013400097741 016660000000000I0670N019 +SWT000000030000013500097741 016660000000000I0690N020 +SWT000000030000013600097741 016660000000000I0780N021 +SWT000000030000013700097741 016660000000000I0800N022 +SWT000000030000013800097741 016660000000000I0894N023 +PWR000000030000013901283329 NIGHT GARDEN MUSIC 00097741 +SWR000000030000014000224132 HARWOOD JUSTIN C 00000000000183545848021016670210000002100000 N 000000000000 +SWT000000030000014100224132 016670000000000I0056N001 +SWT000000030000014200224132 016670000000000I0442N002 +SWT000000030000014300224132 016670000000000I0528N003 +SWT000000030000014400224132 016670000000000I2109N004 +SWT000000030000014500224132 016670000000000I2127N005 +SWT000000030000014600224132 016670000000000I0028N006 +SWT000000030000014700224132 016670000000000I0044N007 +SWT000000030000014800224132 016670000000000I0052N008 +SWT000000030000014900224132 016670000000000I0096N009 +SWT000000030000015000224132 016670000000000I0196N010 +SWT000000030000015100224132 016670000000000I0212N011 +SWT000000030000015200224132 016670000000000I0308N012 +SWT000000030000015300224132 016670000000000I2111N013 +SWT000000030000015400224132 016670000000000I0388N014 +SWT000000030000015500224132 016670000000000I0454N015 +SWT000000030000015600224132 016670000000000I0470N016 +SWT000000030000015700224132 016670000000000I0659N017 +SWT000000030000015800224132 016670000000000I0662N018 +SWT000000030000015900224132 016670000000000I0670N019 +SWT000000030000016000224132 016670000000000I0690N020 +SWT000000030000016100224132 016670000000000I0780N021 +SWT000000030000016200224132 016670000000000I0800N022 +SWT000000030000016300224132 016670000000000I0894N023 +PWR000000030000016400501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000030000016500223119 SUB POP SONGS 00224132 +PWR000000030000016600223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000030000016700223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01666 00000 00000 000000000000 +PER0000000300000168TUATARA +REC000000030000016919970403 000000 BREAKING THE ETHERS EPIC 067908 AU +ACK0000000400000000201606301156440000100000004NWRTHE INDIAN SONG 663373 250310HS 20160630AS +MSG0000000400000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000000400000002THE INDIAN SONG EN663373 T913572674800000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000004000000030101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021010000210200002102000 N +SPU00000004000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000040000000500020412 010000200002000I0056N001 +SPT000000040000000600020412 010000200002000I0442N002 +SPU00000004000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000040000000801200655 010000200002000I0528N001 +SPU00000004000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000040000001012955570 010000200002000I2109N001 +SPT000000040000001112955570 010000200002000I2127N002 +SPU00000004000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000040000001300001509 010000200002000I0028N001 +SPT000000040000001400001509 010000200002000I0044N002 +SPT000000040000001500001509 010000200002000I0052N003 +SPT000000040000001600001509 010000200002000I0096N004 +SPT000000040000001700001509 010000200002000I0196N005 +SPT000000040000001800001509 010000200002000I0212N006 +SPT000000040000001900001509 010000200002000I0308N007 +SPT000000040000002000001509 010000200002000I2111N008 +SPT000000040000002100001509 010000200002000I0388N009 +SPT000000040000002200001509 010000200002000I0454N010 +SPT000000040000002300001509 010000200002000I0470N011 +SPT000000040000002400001509 010000200002000I0659N012 +SPT000000040000002500001509 010000200002000I0662N013 +SPT000000040000002600001509 010000200002000I0670N014 +SPT000000040000002700001509 010000200002000I0690N015 +SPT000000040000002800001509 010000200002000I0780N016 +SPT000000040000002900001509 010000200002000I0800N017 +SPT000000040000003000001509 010000200002000I0894N018 +SPU00000004000000310200003416 SONGS OF UNIVERSAL INC. E 00000000000353271280 021015000210300002103000 N +SPU00000004000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1781881 +SPT000000040000003300020412 015000300003000I0056N001 +SPT000000040000003400020412 015000300003000I0442N002 +SPU00000004000000350201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1781881 +SPT000000040000003601200655 015000300003000I0528N001 +SPU00000004000000370212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1781881 +SPT000000040000003812955570 015000300003000I2109N001 +SPT000000040000003912955570 015000300003000I2127N002 +SPU00000004000000400200001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1781881 +SPT000000040000004100001509 015000300003000I0028N001 +SPT000000040000004200001509 015000300003000I0044N002 +SPT000000040000004300001509 015000300003000I0052N003 +SPT000000040000004400001509 015000300003000I0096N004 +SPT000000040000004500001509 015000300003000I0196N005 +SPT000000040000004600001509 015000300003000I0212N006 +SPT000000040000004700001509 015000300003000I0308N007 +SPT000000040000004800001509 015000300003000I2111N008 +SPT000000040000004900001509 015000300003000I0388N009 +SPT000000040000005000001509 015000300003000I0454N010 +SPT000000040000005100001509 015000300003000I0470N011 +SPT000000040000005200001509 015000300003000I0659N012 +SPT000000040000005300001509 015000300003000I0662N013 +SPT000000040000005400001509 015000300003000I0670N014 +SPT000000040000005500001509 015000300003000I0690N015 +SPT000000040000005600001509 015000300003000I0780N016 +SPT000000040000005700001509 015000300003000I0800N017 +SPT000000040000005800001509 015000300003000I0894N018 +SPU00000004000000590301376138 DROP IN THE BUCKET MUSIC E 00000000000179657902 021015000210300002103000 N +SPU00000004000000600300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1781881 +SPT000000040000006100020412 015000300003000I0056N001 +SPT000000040000006200020412 015000300003000I0442N002 +SPU00000004000000630301200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1781881 +SPT000000040000006401200655 015000300003000I0528N001 +SPU00000004000000650312955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1781881 +SPT000000040000006612955570 015000300003000I2109N001 +SPT000000040000006712955570 015000300003000I2127N002 +SPU00000004000000680300001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1781881 +SPT000000040000006900001509 015000300003000I0028N001 +SPT000000040000007000001509 015000300003000I0044N002 +SPT000000040000007100001509 015000300003000I0052N003 +SPT000000040000007200001509 015000300003000I0096N004 +SPT000000040000007300001509 015000300003000I0196N005 +SPT000000040000007400001509 015000300003000I0212N006 +SPT000000040000007500001509 015000300003000I0308N007 +SPT000000040000007600001509 015000300003000I2111N008 +SPT000000040000007700001509 015000300003000I0388N009 +SPT000000040000007800001509 015000300003000I0454N010 +SPT000000040000007900001509 015000300003000I0470N011 +SPT000000040000008000001509 015000300003000I0659N012 +SPT000000040000008100001509 015000300003000I0662N013 +SPT000000040000008200001509 015000300003000I0670N014 +SPT000000040000008300001509 015000300003000I0690N015 +SPT000000040000008400001509 015000300003000I0780N016 +SPT000000040000008500001509 015000300003000I0800N017 +SPT000000040000008600001509 015000300003000I0894N018 +OPU00000004000000870401376140 STRIKE FOUR MUSIC E 00000000000186981316 01000 02000 02000 +SWR000000040000008800097741 BUCK PETER LAWRENCE CA00000000000008715000021010000210000002100000 N 000000000000 +SWT000000040000008900097741 010000000000000I0056N001 +SWT000000040000009000097741 010000000000000I0442N002 +SWT000000040000009100097741 010000000000000I0528N003 +SWT000000040000009200097741 010000000000000I2109N004 +SWT000000040000009300097741 010000000000000I2127N005 +SWT000000040000009400097741 010000000000000I0028N006 +SWT000000040000009500097741 010000000000000I0044N007 +SWT000000040000009600097741 010000000000000I0052N008 +SWT000000040000009700097741 010000000000000I0096N009 +SWT000000040000009800097741 010000000000000I0196N010 +SWT000000040000009900097741 010000000000000I0212N011 +SWT000000040000010000097741 010000000000000I0308N012 +SWT000000040000010100097741 010000000000000I2111N013 +SWT000000040000010200097741 010000000000000I0388N014 +SWT000000040000010300097741 010000000000000I0454N015 +SWT000000040000010400097741 010000000000000I0470N016 +SWT000000040000010500097741 010000000000000I0659N017 +SWT000000040000010600097741 010000000000000I0662N018 +SWT000000040000010700097741 010000000000000I0670N019 +SWT000000040000010800097741 010000000000000I0690N020 +SWT000000040000010900097741 010000000000000I0780N021 +SWT000000040000011000097741 010000000000000I0800N022 +SWT000000040000011100097741 010000000000000I0894N023 +PWR000000040000011201283329 NIGHT GARDEN MUSIC 00097741 +SWR000000040000011300226421 NIELSEN TIM CA00000000000209562077021010000210000002100000 N 000000000000 +SWT000000040000011400226421 010000000000000I0056N001 +SWT000000040000011500226421 010000000000000I0442N002 +SWT000000040000011600226421 010000000000000I0528N003 +SWT000000040000011700226421 010000000000000I2109N004 +SWT000000040000011800226421 010000000000000I2127N005 +SWT000000040000011900226421 010000000000000I0028N006 +SWT000000040000012000226421 010000000000000I0044N007 +SWT000000040000012100226421 010000000000000I0052N008 +SWT000000040000012200226421 010000000000000I0096N009 +SWT000000040000012300226421 010000000000000I0196N010 +SWT000000040000012400226421 010000000000000I0212N011 +SWT000000040000012500226421 010000000000000I0308N012 +SWT000000040000012600226421 010000000000000I2111N013 +SWT000000040000012700226421 010000000000000I0388N014 +SWT000000040000012800226421 010000000000000I0454N015 +SWT000000040000012900226421 010000000000000I0470N016 +SWT000000040000013000226421 010000000000000I0659N017 +SWT000000040000013100226421 010000000000000I0662N018 +SWT000000040000013200226421 010000000000000I0670N019 +SWT000000040000013300226421 010000000000000I0690N020 +SWT000000040000013400226421 010000000000000I0780N021 +SWT000000040000013500226421 010000000000000I0800N022 +SWT000000040000013600226421 010000000000000I0894N023 +PWR000000040000013700003416 SONGS OF UNIVERSAL INC. 00226421 +PWR000000040000013801376138 DROP IN THE BUCKET MUSIC 00226421 +SWR000000040000013900244664 KINNEY KEVIN GERARD CA00000000000211429507021010000210000002100000 N 000000000000 +SWT000000040000014000244664 010000000000000I0056N001 +SWT000000040000014100244664 010000000000000I0442N002 +SWT000000040000014200244664 010000000000000I0528N003 +SWT000000040000014300244664 010000000000000I2109N004 +SWT000000040000014400244664 010000000000000I2127N005 +SWT000000040000014500244664 010000000000000I0028N006 +SWT000000040000014600244664 010000000000000I0044N007 +SWT000000040000014700244664 010000000000000I0052N008 +SWT000000040000014800244664 010000000000000I0096N009 +SWT000000040000014900244664 010000000000000I0196N010 +SWT000000040000015000244664 010000000000000I0212N011 +SWT000000040000015100244664 010000000000000I0308N012 +SWT000000040000015200244664 010000000000000I2111N013 +SWT000000040000015300244664 010000000000000I0388N014 +SWT000000040000015400244664 010000000000000I0454N015 +SWT000000040000015500244664 010000000000000I0470N016 +SWT000000040000015600244664 010000000000000I0659N017 +SWT000000040000015700244664 010000000000000I0662N018 +SWT000000040000015800244664 010000000000000I0670N019 +SWT000000040000015900244664 010000000000000I0690N020 +SWT000000040000016000244664 010000000000000I0780N021 +SWT000000040000016100244664 010000000000000I0800N022 +SWT000000040000016200244664 010000000000000I0894N023 +PWR000000040000016300003416 SONGS OF UNIVERSAL INC. 00244664 +PWR000000040000016401376138 DROP IN THE BUCKET MUSIC 00244664 +SWR000000040000016500244668 SULLIVAN JEFF CA00000000000241675275021010000990000009900000 N 000000000000 +SWT000000040000016600244668 010000000000000I0056N001 +SWT000000040000016700244668 010000000000000I0442N002 +SWT000000040000016800244668 010000000000000I0528N003 +SWT000000040000016900244668 010000000000000I2109N004 +SWT000000040000017000244668 010000000000000I2127N005 +SWT000000040000017100244668 010000000000000I0028N006 +SWT000000040000017200244668 010000000000000I0044N007 +SWT000000040000017300244668 010000000000000I0052N008 +SWT000000040000017400244668 010000000000000I0096N009 +SWT000000040000017500244668 010000000000000I0196N010 +SWT000000040000017600244668 010000000000000I0212N011 +SWT000000040000017700244668 010000000000000I0308N012 +SWT000000040000017800244668 010000000000000I2111N013 +SWT000000040000017900244668 010000000000000I0388N014 +SWT000000040000018000244668 010000000000000I0454N015 +SWT000000040000018100244668 010000000000000I0470N016 +SWT000000040000018200244668 010000000000000I0659N017 +SWT000000040000018300244668 010000000000000I0662N018 +SWT000000040000018400244668 010000000000000I0670N019 +SWT000000040000018500244668 010000000000000I0690N020 +SWT000000040000018600244668 010000000000000I0780N021 +SWT000000040000018700244668 010000000000000I0800N022 +SWT000000040000018800244668 010000000000000I0894N023 +PWR000000040000018900003416 SONGS OF UNIVERSAL INC. 00244668 +PWR000000040000019001376138 DROP IN THE BUCKET MUSIC 00244668 +OWR000000040000019100244667 FOWLER BUREN CA00000000000241555778 01000 00000 00000 000000000000 +PER0000000400000192DRIVIN N CRYIN +REC000000040000019300000000 000000 WRAPPED IN SKY ISLAND DEF JAM AU +REC000000040000019400000000 000000 US6JC1100031AU +REC000000040000019500000000 000000 USGF19582601AU +ACK0000000500000000201606301156440000100000005NWRL'ESPIONNAGE POMME DE TERRE 061762 250310HT 20160630AS +NWR0000000500000001L'ESPIONNAGE POMME DE TERRE EN061762 19980623 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000005000000020112445809 TEMPORARY MUSIC E 00000000000197915025 021010000210200002102000 N +SPU00000005000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000050000000400020412 010000200002000I0056N001 +SPT000000050000000500020412 010000200002000I0442N002 +SPU00000005000000060101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000050000000701200655 010000200002000I0528N001 +SPU00000005000000080112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000050000000912955570 010000200002000I2109N001 +SPT000000050000001012955570 010000200002000I2127N002 +SPU00000005000000110100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000050000001200001509 010000200002000I0028N001 +SPT000000050000001300001509 010000200002000I0044N002 +SPT000000050000001400001509 010000200002000I0052N003 +SPT000000050000001500001509 010000200002000I0096N004 +SPT000000050000001600001509 010000200002000I0196N005 +SPT000000050000001700001509 010000200002000I0212N006 +SPT000000050000001800001509 010000200002000I0308N007 +SPT000000050000001900001509 010000200002000I2111N008 +SPT000000050000002000001509 010000200002000I0388N009 +SPT000000050000002100001509 010000200002000I0454N010 +SPT000000050000002200001509 010000200002000I0470N011 +SPT000000050000002300001509 010000200002000I0659N012 +SPT000000050000002400001509 010000200002000I0662N013 +SPT000000050000002500001509 010000200002000I0670N014 +SPT000000050000002600001509 010000200002000I0690N015 +SPT000000050000002700001509 010000200002000I0780N016 +SPT000000050000002800001509 010000200002000I0800N017 +SPT000000050000002900001509 010000200002000I0894N018 +SPU00000005000000300200501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021002500210050002100500 N +SPU00000005000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000050000003200020412 002500050000500I0056N001 +SPT000000050000003300020412 002500050000500I0442N002 +SPU00000005000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000050000003500057379 002500050000500I0528N001 +SPU00000005000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000050000003700179554 002500050000500I2109N001 +SPT000000050000003800179554 002500050000500I2127N002 +SPU00000005000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000050000004000029396 002500050000500I0028N001 +SPT000000050000004100029396 002500050000500I0044N002 +SPT000000050000004200029396 002500050000500I0052N003 +SPT000000050000004300029396 002500050000500I0096N004 +SPT000000050000004400029396 002500050000500I0196N005 +SPT000000050000004500029396 002500050000500I0212N006 +SPT000000050000004600029396 002500050000500I0308N007 +SPT000000050000004700029396 002500050000500I2111N008 +SPT000000050000004800029396 002500050000500I0388N009 +SPT000000050000004900029396 002500050000500I0454N010 +SPT000000050000005000029396 002500050000500I0470N011 +SPT000000050000005100029396 002500050000500I0659N012 +SPT000000050000005200029396 002500050000500I0662N013 +SPT000000050000005300029396 002500050000500I0670N014 +SPT000000050000005400029396 002500050000500I0690N015 +SPT000000050000005500029396 002500050000500I0780N016 +SPT000000050000005600029396 002500050000500I0800N017 +SPT000000050000005700029396 002500050000500I0894N018 +SPU00000005000000580300223119 SUB POP SONGS E 00000000000196616827 021002500210050002100500 N +SPU00000005000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000050000006000020412 002500050000500I0056N001 +SPT000000050000006100020412 002500050000500I0442N002 +SPU00000005000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000050000006300057379 002500050000500I0528N001 +SPU00000005000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000050000006500179554 002500050000500I2109N001 +SPT000000050000006600179554 002500050000500I2127N002 +SPU00000005000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000050000006800029396 002500050000500I0028N001 +SPT000000050000006900029396 002500050000500I0044N002 +SPT000000050000007000029396 002500050000500I0052N003 +SPT000000050000007100029396 002500050000500I0096N004 +SPT000000050000007200029396 002500050000500I0196N005 +SPT000000050000007300029396 002500050000500I0212N006 +SPT000000050000007400029396 002500050000500I0308N007 +SPT000000050000007500029396 002500050000500I2111N008 +SPT000000050000007600029396 002500050000500I0388N009 +SPT000000050000007700029396 002500050000500I0454N010 +SPT000000050000007800029396 002500050000500I0470N011 +SPT000000050000007900029396 002500050000500I0659N012 +SPT000000050000008000029396 002500050000500I0662N013 +SPT000000050000008100029396 002500050000500I0670N014 +SPT000000050000008200029396 002500050000500I0690N015 +SPT000000050000008300029396 002500050000500I0780N016 +SPT000000050000008400029396 002500050000500I0800N017 +SPT000000050000008500029396 002500050000500I0894N018 +SPU00000005000000860400223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021005000210100002101000 N +SPU00000005000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000050000008800020412 005000100001000I0056N001 +SPT000000050000008900020412 005000100001000I0442N002 +SPU00000005000000900400057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000050000009100057379 005000100001000I0528N001 +SPU00000005000000920400179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000050000009300179554 005000100001000I2109N001 +SPT000000050000009400179554 005000100001000I2127N002 +SPU00000005000000950400029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000050000009600029396 005000100001000I0028N001 +SPT000000050000009700029396 005000100001000I0044N002 +SPT000000050000009800029396 005000100001000I0052N003 +SPT000000050000009900029396 005000100001000I0096N004 +SPT000000050000010000029396 005000100001000I0196N005 +SPT000000050000010100029396 005000100001000I0212N006 +SPT000000050000010200029396 005000100001000I0308N007 +SPT000000050000010300029396 005000100001000I2111N008 +SPT000000050000010400029396 005000100001000I0388N009 +SPT000000050000010500029396 005000100001000I0454N010 +SPT000000050000010600029396 005000100001000I0470N011 +SPT000000050000010700029396 005000100001000I0659N012 +SPT000000050000010800029396 005000100001000I0662N013 +SPT000000050000010900029396 005000100001000I0670N014 +SPT000000050000011000029396 005000100001000I0690N015 +SPT000000050000011100029396 005000100001000I0780N016 +SPT000000050000011200029396 005000100001000I0800N017 +SPT000000050000011300029396 005000100001000I0894N018 +OPU00000005000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01000 02000 02000 +OPU00000005000001150606015301 SKERIK MUSIC E 00000000000182924159 01000 02000 02000 +OPU00000005000001160700223960 BUG MUSIC E 00000000000036210128 00500 01000 01000 +OPU00000005000001170812065348 MACNOR MUSIC E 00000000000135936558 00500 01000 01000 +SWR000000050000011800097741 BUCK PETER LAWRENCE C 00000000000008715000021010000210000002100000 N 000000000000 +SWT000000050000011900097741 010000000000000I0056N001 +SWT000000050000012000097741 010000000000000I0442N002 +SWT000000050000012100097741 010000000000000I0528N003 +SWT000000050000012200097741 010000000000000I2109N004 +SWT000000050000012300097741 010000000000000I2127N005 +SWT000000050000012400097741 010000000000000I0028N006 +SWT000000050000012500097741 010000000000000I0044N007 +SWT000000050000012600097741 010000000000000I0052N008 +SWT000000050000012700097741 010000000000000I0096N009 +SWT000000050000012800097741 010000000000000I0196N010 +SWT000000050000012900097741 010000000000000I0212N011 +SWT000000050000013000097741 010000000000000I0308N012 +SWT000000050000013100097741 010000000000000I2111N013 +SWT000000050000013200097741 010000000000000I0388N014 +SWT000000050000013300097741 010000000000000I0454N015 +SWT000000050000013400097741 010000000000000I0470N016 +SWT000000050000013500097741 010000000000000I0659N017 +SWT000000050000013600097741 010000000000000I0662N018 +SWT000000050000013700097741 010000000000000I0670N019 +SWT000000050000013800097741 010000000000000I0690N020 +SWT000000050000013900097741 010000000000000I0780N021 +SWT000000050000014000097741 010000000000000I0800N022 +SWT000000050000014100097741 010000000000000I0894N023 +PWR000000050000014212445809 TEMPORARY MUSIC 00097741 +SWR000000050000014300224132 HARWOOD JUSTIN C 00000000000183545848021010000210000002100000 N 000000000000 +SWT000000050000014400224132 010000000000000I0056N001 +SWT000000050000014500224132 010000000000000I0442N002 +SWT000000050000014600224132 010000000000000I0528N003 +SWT000000050000014700224132 010000000000000I2109N004 +SWT000000050000014800224132 010000000000000I2127N005 +SWT000000050000014900224132 010000000000000I0028N006 +SWT000000050000015000224132 010000000000000I0044N007 +SWT000000050000015100224132 010000000000000I0052N008 +SWT000000050000015200224132 010000000000000I0096N009 +SWT000000050000015300224132 010000000000000I0196N010 +SWT000000050000015400224132 010000000000000I0212N011 +SWT000000050000015500224132 010000000000000I0308N012 +SWT000000050000015600224132 010000000000000I2111N013 +SWT000000050000015700224132 010000000000000I0388N014 +SWT000000050000015800224132 010000000000000I0454N015 +SWT000000050000015900224132 010000000000000I0470N016 +SWT000000050000016000224132 010000000000000I0659N017 +SWT000000050000016100224132 010000000000000I0662N018 +SWT000000050000016200224132 010000000000000I0670N019 +SWT000000050000016300224132 010000000000000I0690N020 +SWT000000050000016400224132 010000000000000I0780N021 +SWT000000050000016500224132 010000000000000I0800N022 +SWT000000050000016600224132 010000000000000I0894N023 +PWR000000050000016700501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000050000016800223119 SUB POP SONGS 00224132 +PWR000000050000016900223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000050000017000223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01000 00000 00000 000000000000 +OWR000000050000017100260302 SKERIK C 000000000 01000 00000 00000 000000000000 +OWR000000050000017212065347 MCCAUGHEY SCOTT LEWIS C 00000000000135487364 01000 00000 00000 000000000000 +PER0000000500000173TUATARA +REC000000050000017419980623 000000 TRADING WITH THE ENEMY WORLD-EPIC 68850 AU +REC000000050000017500000000 000000 USSM19703930AU +ACK0000000600000000201606301156440000100000006NWRLAND OF APPLES 105839 250310HU 20160630AS +NWR0000000600000001LAND OF APPLES EN105839 T914011860119970403 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000006000000020101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021012500210250002102500 N +SPU00000006000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000060000000400020412 012500250002500I0056N001 +SPT000000060000000500020412 012500250002500I0442N002 +SPU00000006000000060101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000060000000701200655 012500250002500I0528N001 +SPU00000006000000080112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000060000000912955570 012500250002500I2109N001 +SPT000000060000001012955570 012500250002500I2127N002 +SPU00000006000000110100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000060000001200001509 012500250002500I0028N001 +SPT000000060000001300001509 012500250002500I0044N002 +SPT000000060000001400001509 012500250002500I0052N003 +SPT000000060000001500001509 012500250002500I0096N004 +SPT000000060000001600001509 012500250002500I0196N005 +SPT000000060000001700001509 012500250002500I0212N006 +SPT000000060000001800001509 012500250002500I0308N007 +SPT000000060000001900001509 012500250002500I2111N008 +SPT000000060000002000001509 012500250002500I0388N009 +SPT000000060000002100001509 012500250002500I0454N010 +SPT000000060000002200001509 012500250002500I0470N011 +SPT000000060000002300001509 012500250002500I0659N012 +SPT000000060000002400001509 012500250002500I0662N013 +SPT000000060000002500001509 012500250002500I0670N014 +SPT000000060000002600001509 012500250002500I0690N015 +SPT000000060000002700001509 012500250002500I0780N016 +SPT000000060000002800001509 012500250002500I0800N017 +SPT000000060000002900001509 012500250002500I0894N018 +SPU00000006000000300200501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021003120210062502100625 N +SPU00000006000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000060000003200020412 003120062500625I0056N001 +SPT000000060000003300020412 003120062500625I0442N002 +SPU00000006000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000060000003500057379 003120062500625I0528N001 +SPU00000006000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000060000003700179554 003120062500625I2109N001 +SPT000000060000003800179554 003120062500625I2127N002 +SPU00000006000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000060000004000029396 003120062500625I0028N001 +SPT000000060000004100029396 003120062500625I0044N002 +SPT000000060000004200029396 003120062500625I0052N003 +SPT000000060000004300029396 003120062500625I0096N004 +SPT000000060000004400029396 003120062500625I0196N005 +SPT000000060000004500029396 003120062500625I0212N006 +SPT000000060000004600029396 003120062500625I0308N007 +SPT000000060000004700029396 003120062500625I2111N008 +SPT000000060000004800029396 003120062500625I0388N009 +SPT000000060000004900029396 003120062500625I0454N010 +SPT000000060000005000029396 003120062500625I0470N011 +SPT000000060000005100029396 003120062500625I0659N012 +SPT000000060000005200029396 003120062500625I0662N013 +SPT000000060000005300029396 003120062500625I0670N014 +SPT000000060000005400029396 003120062500625I0690N015 +SPT000000060000005500029396 003120062500625I0780N016 +SPT000000060000005600029396 003120062500625I0800N017 +SPT000000060000005700029396 003120062500625I0894N018 +SPU00000006000000580300223119 SUB POP SONGS E 00000000000196616827 021003120210062502100625 N +SPU00000006000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000060000006000020412 003120062500625I0056N001 +SPT000000060000006100020412 003120062500625I0442N002 +SPU00000006000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000060000006300057379 003120062500625I0528N001 +SPU00000006000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000060000006500179554 003120062500625I2109N001 +SPT000000060000006600179554 003120062500625I2127N002 +SPU00000006000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000060000006800029396 003120062500625I0028N001 +SPT000000060000006900029396 003120062500625I0044N002 +SPT000000060000007000029396 003120062500625I0052N003 +SPT000000060000007100029396 003120062500625I0096N004 +SPT000000060000007200029396 003120062500625I0196N005 +SPT000000060000007300029396 003120062500625I0212N006 +SPT000000060000007400029396 003120062500625I0308N007 +SPT000000060000007500029396 003120062500625I2111N008 +SPT000000060000007600029396 003120062500625I0388N009 +SPT000000060000007700029396 003120062500625I0454N010 +SPT000000060000007800029396 003120062500625I0470N011 +SPT000000060000007900029396 003120062500625I0659N012 +SPT000000060000008000029396 003120062500625I0662N013 +SPT000000060000008100029396 003120062500625I0670N014 +SPT000000060000008200029396 003120062500625I0690N015 +SPT000000060000008300029396 003120062500625I0780N016 +SPT000000060000008400029396 003120062500625I0800N017 +SPT000000060000008500029396 003120062500625I0894N018 +SPU00000006000000860400223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021006250210125002101250 N +SPU00000006000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000060000008800020412 006250125001250I0056N001 +SPT000000060000008900020412 006250125001250I0442N002 +SPU00000006000000900400057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000060000009100057379 006250125001250I0528N001 +SPU00000006000000920400179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000060000009300179554 006250125001250I2109N001 +SPT000000060000009400179554 006250125001250I2127N002 +SPU00000006000000950400029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000060000009600029396 006250125001250I0028N001 +SPT000000060000009700029396 006250125001250I0044N002 +SPT000000060000009800029396 006250125001250I0052N003 +SPT000000060000009900029396 006250125001250I0096N004 +SPT000000060000010000029396 006250125001250I0196N005 +SPT000000060000010100029396 006250125001250I0212N006 +SPT000000060000010200029396 006250125001250I0308N007 +SPT000000060000010300029396 006250125001250I2111N008 +SPT000000060000010400029396 006250125001250I0388N009 +SPT000000060000010500029396 006250125001250I0454N010 +SPT000000060000010600029396 006250125001250I0470N011 +SPT000000060000010700029396 006250125001250I0659N012 +SPT000000060000010800029396 006250125001250I0662N013 +SPT000000060000010900029396 006250125001250I0670N014 +SPT000000060000011000029396 006250125001250I0690N015 +SPT000000060000011100029396 006250125001250I0780N016 +SPT000000060000011200029396 006250125001250I0800N017 +SPT000000060000011300029396 006250125001250I0894N018 +OPU00000006000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01250 02500 02500 +OPU000000060000011506 YE 00000000000288936892 01250 02500 02500 +SWR000000060000011600097741 BUCK PETER LAWRENCE C 00000000000008715000021012500210000002100000 N 000000000000 +SWT000000060000011700097741 012500000000000I0056N001 +SWT000000060000011800097741 012500000000000I0442N002 +SWT000000060000011900097741 012500000000000I0528N003 +SWT000000060000012000097741 012500000000000I2109N004 +SWT000000060000012100097741 012500000000000I2127N005 +SWT000000060000012200097741 012500000000000I0028N006 +SWT000000060000012300097741 012500000000000I0044N007 +SWT000000060000012400097741 012500000000000I0052N008 +SWT000000060000012500097741 012500000000000I0096N009 +SWT000000060000012600097741 012500000000000I0196N010 +SWT000000060000012700097741 012500000000000I0212N011 +SWT000000060000012800097741 012500000000000I0308N012 +SWT000000060000012900097741 012500000000000I2111N013 +SWT000000060000013000097741 012500000000000I0388N014 +SWT000000060000013100097741 012500000000000I0454N015 +SWT000000060000013200097741 012500000000000I0470N016 +SWT000000060000013300097741 012500000000000I0659N017 +SWT000000060000013400097741 012500000000000I0662N018 +SWT000000060000013500097741 012500000000000I0670N019 +SWT000000060000013600097741 012500000000000I0690N020 +SWT000000060000013700097741 012500000000000I0780N021 +SWT000000060000013800097741 012500000000000I0800N022 +SWT000000060000013900097741 012500000000000I0894N023 +PWR000000060000014001283329 NIGHT GARDEN MUSIC 00097741 +SWR000000060000014100224132 HARWOOD JUSTIN C 00000000000183545848021012500210000002100000 N 000000000000 +SWT000000060000014200224132 012500000000000I0056N001 +SWT000000060000014300224132 012500000000000I0442N002 +SWT000000060000014400224132 012500000000000I0528N003 +SWT000000060000014500224132 012500000000000I2109N004 +SWT000000060000014600224132 012500000000000I2127N005 +SWT000000060000014700224132 012500000000000I0028N006 +SWT000000060000014800224132 012500000000000I0044N007 +SWT000000060000014900224132 012500000000000I0052N008 +SWT000000060000015000224132 012500000000000I0096N009 +SWT000000060000015100224132 012500000000000I0196N010 +SWT000000060000015200224132 012500000000000I0212N011 +SWT000000060000015300224132 012500000000000I0308N012 +SWT000000060000015400224132 012500000000000I2111N013 +SWT000000060000015500224132 012500000000000I0388N014 +SWT000000060000015600224132 012500000000000I0454N015 +SWT000000060000015700224132 012500000000000I0470N016 +SWT000000060000015800224132 012500000000000I0659N017 +SWT000000060000015900224132 012500000000000I0662N018 +SWT000000060000016000224132 012500000000000I0670N019 +SWT000000060000016100224132 012500000000000I0690N020 +SWT000000060000016200224132 012500000000000I0780N021 +SWT000000060000016300224132 012500000000000I0800N022 +SWT000000060000016400224132 012500000000000I0894N023 +PWR000000060000016500501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000060000016600223119 SUB POP SONGS 00224132 +PWR000000060000016700223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000060000016800223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01250 00000 00000 000000000000 +OWR000000060000016900103009 WALTON ERIC CA00000000000186574821 01250 00000 00000 000000000000 +PER0000000600000170TUATARA +REC000000060000017119970403 000000 BREAKING THE ETHERS EPIC 067908 AU +ACK0000000700000000201606301156440000100000007NWRNEGOTIATION 061760 250310HV 20160630AS +NWR0000000700000001NEGOTIATION EN061760 T071574140419980623 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000007000000020112445809 TEMPORARY MUSIC E 00000000000197915025 021007140210142802101428 N +SPU00000007000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000070000000400020412 007140142801428I0056N001 +SPT000000070000000500020412 007140142801428I0442N002 +SPU00000007000000060101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000070000000701200655 007140142801428I0528N001 +SPU00000007000000080112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000070000000912955570 007140142801428I2109N001 +SPT000000070000001012955570 007140142801428I2127N002 +SPU00000007000000110100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000070000001200001509 007140142801428I0028N001 +SPT000000070000001300001509 007140142801428I0044N002 +SPT000000070000001400001509 007140142801428I0052N003 +SPT000000070000001500001509 007140142801428I0096N004 +SPT000000070000001600001509 007140142801428I0196N005 +SPT000000070000001700001509 007140142801428I0212N006 +SPT000000070000001800001509 007140142801428I0308N007 +SPT000000070000001900001509 007140142801428I2111N008 +SPT000000070000002000001509 007140142801428I0388N009 +SPT000000070000002100001509 007140142801428I0454N010 +SPT000000070000002200001509 007140142801428I0470N011 +SPT000000070000002300001509 007140142801428I0659N012 +SPT000000070000002400001509 007140142801428I0662N013 +SPT000000070000002500001509 007140142801428I0670N014 +SPT000000070000002600001509 007140142801428I0690N015 +SPT000000070000002700001509 007140142801428I0780N016 +SPT000000070000002800001509 007140142801428I0800N017 +SPT000000070000002900001509 007140142801428I0894N018 +SPU00000007000000300200501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021001780210035702100357 N +SPU00000007000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000070000003200020412 001780035700357I0056N001 +SPT000000070000003300020412 001780035700357I0442N002 +SPU00000007000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000070000003500057379 001780035700357I0528N001 +SPU00000007000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000070000003700179554 001780035700357I2109N001 +SPT000000070000003800179554 001780035700357I2127N002 +SPU00000007000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000070000004000029396 001780035700357I0028N001 +SPT000000070000004100029396 001780035700357I0044N002 +SPT000000070000004200029396 001780035700357I0052N003 +SPT000000070000004300029396 001780035700357I0096N004 +SPT000000070000004400029396 001780035700357I0196N005 +SPT000000070000004500029396 001780035700357I0212N006 +SPT000000070000004600029396 001780035700357I0308N007 +SPT000000070000004700029396 001780035700357I2111N008 +SPT000000070000004800029396 001780035700357I0388N009 +SPT000000070000004900029396 001780035700357I0454N010 +SPT000000070000005000029396 001780035700357I0470N011 +SPT000000070000005100029396 001780035700357I0659N012 +SPT000000070000005200029396 001780035700357I0662N013 +SPT000000070000005300029396 001780035700357I0670N014 +SPT000000070000005400029396 001780035700357I0690N015 +SPT000000070000005500029396 001780035700357I0780N016 +SPT000000070000005600029396 001780035700357I0800N017 +SPT000000070000005700029396 001780035700357I0894N018 +SPU00000007000000580300223119 SUB POP SONGS E 00000000000196616827 021001780210035702100357 N +SPU00000007000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000070000006000020412 001780035700357I0056N001 +SPT000000070000006100020412 001780035700357I0442N002 +SPU00000007000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000070000006300057379 001780035700357I0528N001 +SPU00000007000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000070000006500179554 001780035700357I2109N001 +SPT000000070000006600179554 001780035700357I2127N002 +SPU00000007000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000070000006800029396 001780035700357I0028N001 +SPT000000070000006900029396 001780035700357I0044N002 +SPT000000070000007000029396 001780035700357I0052N003 +SPT000000070000007100029396 001780035700357I0096N004 +SPT000000070000007200029396 001780035700357I0196N005 +SPT000000070000007300029396 001780035700357I0212N006 +SPT000000070000007400029396 001780035700357I0308N007 +SPT000000070000007500029396 001780035700357I2111N008 +SPT000000070000007600029396 001780035700357I0388N009 +SPT000000070000007700029396 001780035700357I0454N010 +SPT000000070000007800029396 001780035700357I0470N011 +SPT000000070000007900029396 001780035700357I0659N012 +SPT000000070000008000029396 001780035700357I0662N013 +SPT000000070000008100029396 001780035700357I0670N014 +SPT000000070000008200029396 001780035700357I0690N015 +SPT000000070000008300029396 001780035700357I0780N016 +SPT000000070000008400029396 001780035700357I0800N017 +SPT000000070000008500029396 001780035700357I0894N018 +SPU00000007000000860400223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021003570210071402100714 N +SPU00000007000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000070000008800020412 003570071400714I0056N001 +SPT000000070000008900020412 003570071400714I0442N002 +SPU00000007000000900400057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000070000009100057379 003570071400714I0528N001 +SPU00000007000000920400179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000070000009300179554 003570071400714I2109N001 +SPT000000070000009400179554 003570071400714I2127N002 +SPU00000007000000950400029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000070000009600029396 003570071400714I0028N001 +SPT000000070000009700029396 003570071400714I0044N002 +SPT000000070000009800029396 003570071400714I0052N003 +SPT000000070000009900029396 003570071400714I0096N004 +SPT000000070000010000029396 003570071400714I0196N005 +SPT000000070000010100029396 003570071400714I0212N006 +SPT000000070000010200029396 003570071400714I0308N007 +SPT000000070000010300029396 003570071400714I2111N008 +SPT000000070000010400029396 003570071400714I0388N009 +SPT000000070000010500029396 003570071400714I0454N010 +SPT000000070000010600029396 003570071400714I0470N011 +SPT000000070000010700029396 003570071400714I0659N012 +SPT000000070000010800029396 003570071400714I0662N013 +SPT000000070000010900029396 003570071400714I0670N014 +SPT000000070000011000029396 003570071400714I0690N015 +SPT000000070000011100029396 003570071400714I0780N016 +SPT000000070000011200029396 003570071400714I0800N017 +SPT000000070000011300029396 003570071400714I0894N018 +OPU00000007000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 00716 01432 01432 +OPU000000070000011506 YE 00000000000288936892 02142 04284 04284 +OPU00000007000001160700223960 BUG MUSIC E 00000000000036210128 00357 00714 00714 +OPU00000007000001170812065348 MACNOR MUSIC E 00000000000135936558 00357 00714 00714 +SWR000000070000011800097741 BUCK PETER LAWRENCE C 00000000000008715000021007140210000002100000 N 000000000000 +SWT000000070000011900097741 007140000000000I0056N001 +SWT000000070000012000097741 007140000000000I0442N002 +SWT000000070000012100097741 007140000000000I0528N003 +SWT000000070000012200097741 007140000000000I2109N004 +SWT000000070000012300097741 007140000000000I2127N005 +SWT000000070000012400097741 007140000000000I0028N006 +SWT000000070000012500097741 007140000000000I0044N007 +SWT000000070000012600097741 007140000000000I0052N008 +SWT000000070000012700097741 007140000000000I0096N009 +SWT000000070000012800097741 007140000000000I0196N010 +SWT000000070000012900097741 007140000000000I0212N011 +SWT000000070000013000097741 007140000000000I0308N012 +SWT000000070000013100097741 007140000000000I2111N013 +SWT000000070000013200097741 007140000000000I0388N014 +SWT000000070000013300097741 007140000000000I0454N015 +SWT000000070000013400097741 007140000000000I0470N016 +SWT000000070000013500097741 007140000000000I0659N017 +SWT000000070000013600097741 007140000000000I0662N018 +SWT000000070000013700097741 007140000000000I0670N019 +SWT000000070000013800097741 007140000000000I0690N020 +SWT000000070000013900097741 007140000000000I0780N021 +SWT000000070000014000097741 007140000000000I0800N022 +SWT000000070000014100097741 007140000000000I0894N023 +PWR000000070000014212445809 TEMPORARY MUSIC 00097741 +SWR000000070000014300224132 HARWOOD JUSTIN C 00000000000183545848021007140210000002100000 N 000000000000 +SWT000000070000014400224132 007140000000000I0056N001 +SWT000000070000014500224132 007140000000000I0442N002 +SWT000000070000014600224132 007140000000000I0528N003 +SWT000000070000014700224132 007140000000000I2109N004 +SWT000000070000014800224132 007140000000000I2127N005 +SWT000000070000014900224132 007140000000000I0028N006 +SWT000000070000015000224132 007140000000000I0044N007 +SWT000000070000015100224132 007140000000000I0052N008 +SWT000000070000015200224132 007140000000000I0096N009 +SWT000000070000015300224132 007140000000000I0196N010 +SWT000000070000015400224132 007140000000000I0212N011 +SWT000000070000015500224132 007140000000000I0308N012 +SWT000000070000015600224132 007140000000000I2111N013 +SWT000000070000015700224132 007140000000000I0388N014 +SWT000000070000015800224132 007140000000000I0454N015 +SWT000000070000015900224132 007140000000000I0470N016 +SWT000000070000016000224132 007140000000000I0659N017 +SWT000000070000016100224132 007140000000000I0662N018 +SWT000000070000016200224132 007140000000000I0670N019 +SWT000000070000016300224132 007140000000000I0690N020 +SWT000000070000016400224132 007140000000000I0780N021 +SWT000000070000016500224132 007140000000000I0800N022 +SWT000000070000016600224132 007140000000000I0894N023 +PWR000000070000016700501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000070000016800223119 SUB POP SONGS 00224132 +PWR000000070000016900223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000070000017000223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 00716 00000 00000 000000000000 +OWR000000070000017100260300 BERLIN STEVEN MARC C 00000000000232419788 00714 00000 00000 000000000000 +OWR000000070000017200103009 WALTON ERIC CA00000000000186574821 00714 00000 00000 000000000000 +OWR000000070000017300260303 STONE MICHAEL E. C 00000000000187199910 00714 00000 00000 000000000000 +OWR000000070000017412065347 MCCAUGHEY SCOTT LEWIS C 00000000000135487364 00714 00000 00000 000000000000 +PER0000000700000175TUATARA +REC000000070000017619980623 000000 TRADING WITH THE ENEMY WORLD-EPIC 68850 AU +ACK0000000800000000201606301156440000100000008NWRORPHEUS MUST DIE PH6106 250310HW 20160630AS +NWR0000000800000001ORPHEUS MUST DIE ENPH6106 20070612 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000008000000020112445809 TEMPORARY MUSIC E 00000000000197915025 021012500210250002102500 N +SPU00000008000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000080000000400020412 012500250002500I0056N001 +SPT000000080000000500020412 012500250002500I0442N002 +SPU00000008000000060101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000080000000701200655 012500250002500I0528N001 +SPU00000008000000080112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000080000000912955570 012500250002500I2109N001 +SPT000000080000001012955570 012500250002500I2127N002 +SPU00000008000000110100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000080000001200001509 012500250002500I0028N001 +SPT000000080000001300001509 012500250002500I0044N002 +SPT000000080000001400001509 012500250002500I0052N003 +SPT000000080000001500001509 012500250002500I0096N004 +SPT000000080000001600001509 012500250002500I0196N005 +SPT000000080000001700001509 012500250002500I0212N006 +SPT000000080000001800001509 012500250002500I0308N007 +SPT000000080000001900001509 012500250002500I2111N008 +SPT000000080000002000001509 012500250002500I0388N009 +SPT000000080000002100001509 012500250002500I0454N010 +SPT000000080000002200001509 012500250002500I0470N011 +SPT000000080000002300001509 012500250002500I0659N012 +SPT000000080000002400001509 012500250002500I0662N013 +SPT000000080000002500001509 012500250002500I0670N014 +SPT000000080000002600001509 012500250002500I0690N015 +SPT000000080000002700001509 012500250002500I0780N016 +SPT000000080000002800001509 012500250002500I0800N017 +SPT000000080000002900001509 012500250002500I0894N018 +OPU00000008000000300200223265 WRECKING BALL MUSIC E 00000000000240216025 01250 02500 02500 +OPU000000080000003103 YE 00000000000288936892 01250 02500 02500 +OPU00000008000000320412065348 MACNOR MUSIC E 00000000000135936558 01250 02500 02500 +SWR000000080000003300097741 BUCK PETER LAWRENCE CA00000000000008715000021012500210000002100000 N 000000000000 +SWT000000080000003400097741 012500000000000I0056N001 +SWT000000080000003500097741 012500000000000I0442N002 +SWT000000080000003600097741 012500000000000I0528N003 +SWT000000080000003700097741 012500000000000I2109N004 +SWT000000080000003800097741 012500000000000I2127N005 +SWT000000080000003900097741 012500000000000I0028N006 +SWT000000080000004000097741 012500000000000I0044N007 +SWT000000080000004100097741 012500000000000I0052N008 +SWT000000080000004200097741 012500000000000I0096N009 +SWT000000080000004300097741 012500000000000I0196N010 +SWT000000080000004400097741 012500000000000I0212N011 +SWT000000080000004500097741 012500000000000I0308N012 +SWT000000080000004600097741 012500000000000I2111N013 +SWT000000080000004700097741 012500000000000I0388N014 +SWT000000080000004800097741 012500000000000I0454N015 +SWT000000080000004900097741 012500000000000I0470N016 +SWT000000080000005000097741 012500000000000I0659N017 +SWT000000080000005100097741 012500000000000I0662N018 +SWT000000080000005200097741 012500000000000I0670N019 +SWT000000080000005300097741 012500000000000I0690N020 +SWT000000080000005400097741 012500000000000I0780N021 +SWT000000080000005500097741 012500000000000I0800N022 +SWT000000080000005600097741 012500000000000I0894N023 +PWR000000080000005712445809 TEMPORARY MUSIC 00097741 +OWR000000080000005800251673 HARDING JOHN WESLEY CA00000000000160283395 01250 00000 00000 000000000000 +OWR000000080000005900223264 MARTIN BARRETT HARRINGTON CA00000000000232830591 01250 00000 00000 000000000000 +OWR000000080000006012065347 MCCAUGHEY SCOTT LEWIS CA00000000000135487364 01250 00000 00000 000000000000 +PER0000000800000061TUATARA +PER0000000800000062VARIOUS ARTISTS +REC000000080000006320070612 000000 EAST OF THE SUN FAST HORSE AU +REC000000080000006420131001 000000 IMPORTANT WORKS UMPI 2013-10 2013-10 AU +ACK0000000900000000201606301156440000100000009NWRP.C.H. 061757 250310KM 20160630AS +NWR0000000900000001P.C.H. EN061757 T700165261719980623 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000009000000020100501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. E 00000000000353265272 021004170210083402100834 N +SPU00000009000000030100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000090000000400020412 004170083400834I0056N001 +SPT000000090000000500020412 004170083400834I0442N002 +SPU00000009000000060100057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000090000000700057379 004170083400834I0528N001 +SPU00000009000000080100179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000090000000900179554 004170083400834I2109N001 +SPT000000090000001000179554 004170083400834I2127N002 +SPU00000009000000110100029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000090000001200029396 004170083400834I0028N001 +SPT000000090000001300029396 004170083400834I0044N002 +SPT000000090000001400029396 004170083400834I0052N003 +SPT000000090000001500029396 004170083400834I0096N004 +SPT000000090000001600029396 004170083400834I0196N005 +SPT000000090000001700029396 004170083400834I0212N006 +SPT000000090000001800029396 004170083400834I0308N007 +SPT000000090000001900029396 004170083400834I2111N008 +SPT000000090000002000029396 004170083400834I0388N009 +SPT000000090000002100029396 004170083400834I0454N010 +SPT000000090000002200029396 004170083400834I0470N011 +SPT000000090000002300029396 004170083400834I0659N012 +SPT000000090000002400029396 004170083400834I0662N013 +SPT000000090000002500029396 004170083400834I0670N014 +SPT000000090000002600029396 004170083400834I0690N015 +SPT000000090000002700029396 004170083400834I0780N016 +SPT000000090000002800029396 004170083400834I0800N017 +SPT000000090000002900029396 004170083400834I0894N018 +SPU00000009000000300200223119 SUB POP SONGS E 00000000000196616827 021004160210083302100833 N +SPU00000009000000310200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000090000003200020412 004160083300833I0056N001 +SPT000000090000003300020412 004160083300833I0442N002 +SPU00000009000000340200057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000090000003500057379 004160083300833I0528N001 +SPU00000009000000360200179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000090000003700179554 004160083300833I2109N001 +SPT000000090000003800179554 004160083300833I2127N002 +SPU00000009000000390200029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000090000004000029396 004160083300833I0028N001 +SPT000000090000004100029396 004160083300833I0044N002 +SPT000000090000004200029396 004160083300833I0052N003 +SPT000000090000004300029396 004160083300833I0096N004 +SPT000000090000004400029396 004160083300833I0196N005 +SPT000000090000004500029396 004160083300833I0212N006 +SPT000000090000004600029396 004160083300833I0308N007 +SPT000000090000004700029396 004160083300833I2111N008 +SPT000000090000004800029396 004160083300833I0388N009 +SPT000000090000004900029396 004160083300833I0454N010 +SPT000000090000005000029396 004160083300833I0470N011 +SPT000000090000005100029396 004160083300833I0659N012 +SPT000000090000005200029396 004160083300833I0662N013 +SPT000000090000005300029396 004160083300833I0670N014 +SPT000000090000005400029396 004160083300833I0690N015 +SPT000000090000005500029396 004160083300833I0780N016 +SPT000000090000005600029396 004160083300833I0800N017 +SPT000000090000005700029396 004160083300833I0894N018 +SPU00000009000000580300223268 GOLDEN CRUMPET MUSIC E 00000000000193883914 021008330210166702101667 N +SPU00000009000000590300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 442362 +SPT000000090000006000020412 008330166701667I0056N001 +SPT000000090000006100020412 008330166701667I0442N002 +SPU00000009000000620300057379 UNIVERSAL MUSIC PUBLISHING B.V. SE00000000000209312104 023000000780000007800000 N 442362 +SPT000000090000006300057379 008330166701667I0528N001 +SPU00000009000000640300179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 442362 +SPT000000090000006500179554 008330166701667I2109N001 +SPT000000090000006600179554 008330166701667I2127N002 +SPU00000009000000670300029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 442362 +SPT000000090000006800029396 008330166701667I0028N001 +SPT000000090000006900029396 008330166701667I0044N002 +SPT000000090000007000029396 008330166701667I0052N003 +SPT000000090000007100029396 008330166701667I0096N004 +SPT000000090000007200029396 008330166701667I0196N005 +SPT000000090000007300029396 008330166701667I0212N006 +SPT000000090000007400029396 008330166701667I0308N007 +SPT000000090000007500029396 008330166701667I2111N008 +SPT000000090000007600029396 008330166701667I0388N009 +SPT000000090000007700029396 008330166701667I0454N010 +SPT000000090000007800029396 008330166701667I0470N011 +SPT000000090000007900029396 008330166701667I0659N012 +SPT000000090000008000029396 008330166701667I0662N013 +SPT000000090000008100029396 008330166701667I0670N014 +SPT000000090000008200029396 008330166701667I0690N015 +SPT000000090000008300029396 008330166701667I0780N016 +SPT000000090000008400029396 008330166701667I0800N017 +SPT000000090000008500029396 008330166701667I0894N018 +SPU00000009000000860412445809 TEMPORARY MUSIC E 00000000000197915025 021016660210333302103333 N +SPU00000009000000870400020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000090000008800020412 016660333303333I0056N001 +SPT000000090000008900020412 016660333303333I0442N002 +SPU00000009000000900401200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000090000009101200655 016660333303333I0528N001 +SPU00000009000000920412955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000090000009312955570 016660333303333I2109N001 +SPT000000090000009412955570 016660333303333I2127N002 +SPU00000009000000950400001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000090000009600001509 016660333303333I0028N001 +SPT000000090000009700001509 016660333303333I0044N002 +SPT000000090000009800001509 016660333303333I0052N003 +SPT000000090000009900001509 016660333303333I0096N004 +SPT000000090000010000001509 016660333303333I0196N005 +SPT000000090000010100001509 016660333303333I0212N006 +SPT000000090000010200001509 016660333303333I0308N007 +SPT000000090000010300001509 016660333303333I2111N008 +SPT000000090000010400001509 016660333303333I0388N009 +SPT000000090000010500001509 016660333303333I0454N010 +SPT000000090000010600001509 016660333303333I0470N011 +SPT000000090000010700001509 016660333303333I0659N012 +SPT000000090000010800001509 016660333303333I0662N013 +SPT000000090000010900001509 016660333303333I0670N014 +SPT000000090000011000001509 016660333303333I0690N015 +SPT000000090000011100001509 016660333303333I0780N016 +SPT000000090000011200001509 016660333303333I0800N017 +SPT000000090000011300001509 016660333303333I0894N018 +OPU00000009000001140500223265 WRECKING BALL MUSIC E 00000000000240216025 01666 03333 03333 +SWR000000090000011500097741 BUCK PETER LAWRENCE C 00000000000008715000021016660210000002100000 N 000000000000 +SWT000000090000011600097741 016660000000000I0056N001 +SWT000000090000011700097741 016660000000000I0442N002 +SWT000000090000011800097741 016660000000000I0528N003 +SWT000000090000011900097741 016660000000000I2109N004 +SWT000000090000012000097741 016660000000000I2127N005 +SWT000000090000012100097741 016660000000000I0028N006 +SWT000000090000012200097741 016660000000000I0044N007 +SWT000000090000012300097741 016660000000000I0052N008 +SWT000000090000012400097741 016660000000000I0096N009 +SWT000000090000012500097741 016660000000000I0196N010 +SWT000000090000012600097741 016660000000000I0212N011 +SWT000000090000012700097741 016660000000000I0308N012 +SWT000000090000012800097741 016660000000000I2111N013 +SWT000000090000012900097741 016660000000000I0388N014 +SWT000000090000013000097741 016660000000000I0454N015 +SWT000000090000013100097741 016660000000000I0470N016 +SWT000000090000013200097741 016660000000000I0659N017 +SWT000000090000013300097741 016660000000000I0662N018 +SWT000000090000013400097741 016660000000000I0670N019 +SWT000000090000013500097741 016660000000000I0690N020 +SWT000000090000013600097741 016660000000000I0780N021 +SWT000000090000013700097741 016660000000000I0800N022 +SWT000000090000013800097741 016660000000000I0894N023 +PWR000000090000013912445809 TEMPORARY MUSIC 00097741 +SWR000000090000014000224132 HARWOOD JUSTIN C 00000000000183545848021016670210000002100000 N 000000000000 +SWT000000090000014100224132 016670000000000I0056N001 +SWT000000090000014200224132 016670000000000I0442N002 +SWT000000090000014300224132 016670000000000I0528N003 +SWT000000090000014400224132 016670000000000I2109N004 +SWT000000090000014500224132 016670000000000I2127N005 +SWT000000090000014600224132 016670000000000I0028N006 +SWT000000090000014700224132 016670000000000I0044N007 +SWT000000090000014800224132 016670000000000I0052N008 +SWT000000090000014900224132 016670000000000I0096N009 +SWT000000090000015000224132 016670000000000I0196N010 +SWT000000090000015100224132 016670000000000I0212N011 +SWT000000090000015200224132 016670000000000I0308N012 +SWT000000090000015300224132 016670000000000I2111N013 +SWT000000090000015400224132 016670000000000I0388N014 +SWT000000090000015500224132 016670000000000I0454N015 +SWT000000090000015600224132 016670000000000I0470N016 +SWT000000090000015700224132 016670000000000I0659N017 +SWT000000090000015800224132 016670000000000I0662N018 +SWT000000090000015900224132 016670000000000I0670N019 +SWT000000090000016000224132 016670000000000I0690N020 +SWT000000090000016100224132 016670000000000I0780N021 +SWT000000090000016200224132 016670000000000I0800N022 +SWT000000090000016300224132 016670000000000I0894N023 +PWR000000090000016400501560 UNIVERSAL SONGS OF POLYGRAM INT. INC. 00224132 +PWR000000090000016500223119 SUB POP SONGS 00224132 +PWR000000090000016600223268 GOLDEN CRUMPET MUSIC 00224132 +OWR000000090000016700223264 MARTIN BARRETT HARRINGTON C 00000000000232830591 01666 00000 00000 000000000000 +PER0000000900000168TUATARA +REC000000090000016919980623 000000 TRADING WITH THE ENEMY WORLD-EPIC 68850 AU +ACK0000001000000000201606301156440000100000010NWRPUNK CLUB JE3474 250310KN 20160630AS +MSG0000001000000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001000000002PUNK CLUB ENJE3474 T071020370500000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000010000000030112445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000010000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000100000000500020412 025000500005000I0056N001 +SPT000000100000000600020412 025000500005000I0442N002 +SPU00000010000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000100000000801200655 025000500005000I0528N001 +SPU00000010000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000100000001012955570 025000500005000I2109N001 +SPT000000100000001112955570 025000500005000I2127N002 +SPU00000010000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000100000001300001509 025000500005000I0028N001 +SPT000000100000001400001509 025000500005000I0044N002 +SPT000000100000001500001509 025000500005000I0052N003 +SPT000000100000001600001509 025000500005000I0096N004 +SPT000000100000001700001509 025000500005000I0196N005 +SPT000000100000001800001509 025000500005000I0212N006 +SPT000000100000001900001509 025000500005000I0308N007 +SPT000000100000002000001509 025000500005000I2111N008 +SPT000000100000002100001509 025000500005000I0388N009 +SPT000000100000002200001509 025000500005000I0454N010 +SPT000000100000002300001509 025000500005000I0470N011 +SPT000000100000002400001509 025000500005000I0659N012 +SPT000000100000002500001509 025000500005000I0662N013 +SPT000000100000002600001509 025000500005000I0670N014 +SPT000000100000002700001509 025000500005000I0690N015 +SPT000000100000002800001509 025000500005000I0780N016 +SPT000000100000002900001509 025000500005000I0800N017 +SPT000000100000003000001509 025000500005000I0894N018 +OPU00000010000000310200011371 NOTTING HILL MUSIC UK LTD. E 00000000000247942343 02500 05000 05000 +SWR000000100000003200240696 STIPE MICHAEL CA00000000000235492073021025000990000009900000 N 000000000000 +SWT000000100000003300240696 025000000000000I0056N001 +SWT000000100000003400240696 025000000000000I0442N002 +SWT000000100000003500240696 025000000000000I0528N003 +SWT000000100000003600240696 025000000000000I2109N004 +SWT000000100000003700240696 025000000000000I2127N005 +SWT000000100000003800240696 025000000000000I0028N006 +SWT000000100000003900240696 025000000000000I0044N007 +SWT000000100000004000240696 025000000000000I0052N008 +SWT000000100000004100240696 025000000000000I0096N009 +SWT000000100000004200240696 025000000000000I0196N010 +SWT000000100000004300240696 025000000000000I0212N011 +SWT000000100000004400240696 025000000000000I0308N012 +SWT000000100000004500240696 025000000000000I2111N013 +SWT000000100000004600240696 025000000000000I0388N014 +SWT000000100000004700240696 025000000000000I0454N015 +SWT000000100000004800240696 025000000000000I0470N016 +SWT000000100000004900240696 025000000000000I0659N017 +SWT000000100000005000240696 025000000000000I0662N018 +SWT000000100000005100240696 025000000000000I0670N019 +SWT000000100000005200240696 025000000000000I0690N020 +SWT000000100000005300240696 025000000000000I0780N021 +SWT000000100000005400240696 025000000000000I0800N022 +SWT000000100000005500240696 025000000000000I0894N023 +PWR000000100000005612445809 TEMPORARY MUSIC 00240696 +OWR000000100000005712119129 WILLIS JEREMY PHILIP JOHN CA00000000000159775223 02500 00000 00000 000000000000 +PER0000001000000058UTAH SAINTS +REC000000100000005900000000 000000 'TWO' L.P. ECHO ECHCD33 AU +REC000000100000006020010403 000000 TWO NETTWERK 30199 AU +REC000000100000006100000000 000000 GBBND0000674AU +REC000000100000006200000000 000000 CAN110200331AU +REC000000100000006300000000 000000 USEDD0213121AU +ACK0000001100000000201606301156440000100000011NWRRHINOCEROS JE3473 250310KP 20160630AS +MSG0000001100000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001100000002RHINOCEROS ENJE3473 T071020369200000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000011000000030112445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000011000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000110000000500020412 025000500005000I0056N001 +SPT000000110000000600020412 025000500005000I0442N002 +SPU00000011000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000110000000801200655 025000500005000I0528N001 +SPU00000011000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000110000001012955570 025000500005000I2109N001 +SPT000000110000001112955570 025000500005000I2127N002 +SPU00000011000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000110000001300001509 025000500005000I0028N001 +SPT000000110000001400001509 025000500005000I0044N002 +SPT000000110000001500001509 025000500005000I0052N003 +SPT000000110000001600001509 025000500005000I0096N004 +SPT000000110000001700001509 025000500005000I0196N005 +SPT000000110000001800001509 025000500005000I0212N006 +SPT000000110000001900001509 025000500005000I0308N007 +SPT000000110000002000001509 025000500005000I2111N008 +SPT000000110000002100001509 025000500005000I0388N009 +SPT000000110000002200001509 025000500005000I0454N010 +SPT000000110000002300001509 025000500005000I0470N011 +SPT000000110000002400001509 025000500005000I0659N012 +SPT000000110000002500001509 025000500005000I0662N013 +SPT000000110000002600001509 025000500005000I0670N014 +SPT000000110000002700001509 025000500005000I0690N015 +SPT000000110000002800001509 025000500005000I0780N016 +SPT000000110000002900001509 025000500005000I0800N017 +SPT000000110000003000001509 025000500005000I0894N018 +OPU00000011000000310200011371 NOTTING HILL MUSIC UK LTD. E 00000000000247942343 02500 05000 05000 +SWR000000110000003200240696 STIPE MICHAEL CA00000000000235492073021025000990000009900000 N 000000000000 +SWT000000110000003300240696 025000000000000I0056N001 +SWT000000110000003400240696 025000000000000I0442N002 +SWT000000110000003500240696 025000000000000I0528N003 +SWT000000110000003600240696 025000000000000I2109N004 +SWT000000110000003700240696 025000000000000I2127N005 +SWT000000110000003800240696 025000000000000I0028N006 +SWT000000110000003900240696 025000000000000I0044N007 +SWT000000110000004000240696 025000000000000I0052N008 +SWT000000110000004100240696 025000000000000I0096N009 +SWT000000110000004200240696 025000000000000I0196N010 +SWT000000110000004300240696 025000000000000I0212N011 +SWT000000110000004400240696 025000000000000I0308N012 +SWT000000110000004500240696 025000000000000I2111N013 +SWT000000110000004600240696 025000000000000I0388N014 +SWT000000110000004700240696 025000000000000I0454N015 +SWT000000110000004800240696 025000000000000I0470N016 +SWT000000110000004900240696 025000000000000I0659N017 +SWT000000110000005000240696 025000000000000I0662N018 +SWT000000110000005100240696 025000000000000I0670N019 +SWT000000110000005200240696 025000000000000I0690N020 +SWT000000110000005300240696 025000000000000I0780N021 +SWT000000110000005400240696 025000000000000I0800N022 +SWT000000110000005500240696 025000000000000I0894N023 +PWR000000110000005612445809 TEMPORARY MUSIC 00240696 +OWR000000110000005712119129 WILLIS JEREMY PHILIP JOHN CA00000000000159775223 02500 00000 00000 000000000000 +PER0000001100000058UTAH SAINTS +REC000000110000005900000000 000000 'TWO' L.P. ECHO ECHCD33 AU +REC000000110000006020010403 000000 TWO NETTWERK 30199 AU +REC000000110000006100000000 000000 GBBND0000676AU +REC000000110000006200000000 000000 CAN110200333AU +REC000000110000006300000000 000000 USEDD0213123AU +ACK0000001200000000201606301156440000100000012NWRSUN JE3472 250310KQ 20160630AS +MSG0000001200000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001200000002SUN ENJE3472 T071020368100000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000012000000030112445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000012000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000120000000500020412 025000500005000I0056N001 +SPT000000120000000600020412 025000500005000I0442N002 +SPU00000012000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000120000000801200655 025000500005000I0528N001 +SPU00000012000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000120000001012955570 025000500005000I2109N001 +SPT000000120000001112955570 025000500005000I2127N002 +SPU00000012000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000120000001300001509 025000500005000I0028N001 +SPT000000120000001400001509 025000500005000I0044N002 +SPT000000120000001500001509 025000500005000I0052N003 +SPT000000120000001600001509 025000500005000I0096N004 +SPT000000120000001700001509 025000500005000I0196N005 +SPT000000120000001800001509 025000500005000I0212N006 +SPT000000120000001900001509 025000500005000I0308N007 +SPT000000120000002000001509 025000500005000I2111N008 +SPT000000120000002100001509 025000500005000I0388N009 +SPT000000120000002200001509 025000500005000I0454N010 +SPT000000120000002300001509 025000500005000I0470N011 +SPT000000120000002400001509 025000500005000I0659N012 +SPT000000120000002500001509 025000500005000I0662N013 +SPT000000120000002600001509 025000500005000I0670N014 +SPT000000120000002700001509 025000500005000I0690N015 +SPT000000120000002800001509 025000500005000I0780N016 +SPT000000120000002900001509 025000500005000I0800N017 +SPT000000120000003000001509 025000500005000I0894N018 +OPU00000012000000310200011371 NOTTING HILL MUSIC UK LTD. E 00000000000247942343 02500 05000 05000 +SWR000000120000003200240696 STIPE MICHAEL CA00000000000235492073021025000990000009900000 N 000000000000 +SWT000000120000003300240696 025000000000000I0056N001 +SWT000000120000003400240696 025000000000000I0442N002 +SWT000000120000003500240696 025000000000000I0528N003 +SWT000000120000003600240696 025000000000000I2109N004 +SWT000000120000003700240696 025000000000000I2127N005 +SWT000000120000003800240696 025000000000000I0028N006 +SWT000000120000003900240696 025000000000000I0044N007 +SWT000000120000004000240696 025000000000000I0052N008 +SWT000000120000004100240696 025000000000000I0096N009 +SWT000000120000004200240696 025000000000000I0196N010 +SWT000000120000004300240696 025000000000000I0212N011 +SWT000000120000004400240696 025000000000000I0308N012 +SWT000000120000004500240696 025000000000000I2111N013 +SWT000000120000004600240696 025000000000000I0388N014 +SWT000000120000004700240696 025000000000000I0454N015 +SWT000000120000004800240696 025000000000000I0470N016 +SWT000000120000004900240696 025000000000000I0659N017 +SWT000000120000005000240696 025000000000000I0662N018 +SWT000000120000005100240696 025000000000000I0670N019 +SWT000000120000005200240696 025000000000000I0690N020 +SWT000000120000005300240696 025000000000000I0780N021 +SWT000000120000005400240696 025000000000000I0800N022 +SWT000000120000005500240696 025000000000000I0894N023 +PWR000000120000005612445809 TEMPORARY MUSIC 00240696 +OWR000000120000005712119129 WILLIS JEREMY PHILIP JOHN CA00000000000159775223 02500 00000 00000 000000000000 +PER0000001200000058UTAH SAINTS +REC000000120000005900000000 000000 'TWO' L.P. ECHO ECHCD33 AU +REC000000120000006020010403 000000 TWO NETTWERK 30199 AU +REC000000120000006100000000 000000 GBBND0000671AU +REC000000120000006200000000 000000 EUEDD0104484AU +ACK0000001300000000201606301156440000100000013NWRTHE WAY YOU DREAM LI0385 250310KR 20160630AS +MSG0000001300000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001300000002THE WAY YOU DREAM ENLI0385 T060586006700000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000013000000030100507643 UNIVERSAL MUSIC PUBLISHING MGB LTD. E 00000000000534290267 052015850440317005203170 N 3068188 +SPT000000130000000400507643 015850317003170I0028N001 +SPT000000130000000500507643 015850317003170I0044N002 +SPT000000130000000600507643 015850317003170I0052N003 +SPT000000130000000700507643 015850317003170I0096N004 +SPT000000130000000800507643 015850317003170I0196N005 +SPT000000130000000900507643 015850317003170I0212N006 +SPT000000130000001000507643 015850317003170I0308N007 +SPT000000130000001100507643 015850317003170I2111N008 +SPT000000130000001200507643 015850317003170I0388N009 +SPT000000130000001300507643 015850317003170I0454N010 +SPT000000130000001400507643 015850317003170I0470N011 +SPT000000130000001500507643 015850317003170I0659N012 +SPT000000130000001600507643 015850317003170I0662N013 +SPT000000130000001700507643 015850317003170I0670N014 +SPT000000130000001800507643 015850317003170I0690N015 +SPT000000130000001900507643 015850317003170I0780N016 +SPT000000130000002000507643 015850317003170I0800N017 +SPT000000130000002100507643 015850317003170I0894N018 +SPU00000013000000220100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 3068188 +SPT000000130000002300020412 015850317003170I0056N001 +SPT000000130000002400020412 015850317003170I0442N002 +SPU00000013000000250101227442 UNIVERSAL MUSIC PUBLISHING MGB HOLDING B SE00000000000539387313 023000000230000002300000 N 3068188 +SPT000000130000002601227442 015850317003170I0528N001 +SPU00000013000000270100432261 UNIVERSAL MUSIC PUBLISHING MGB SCANDINAV SE00000000000536507843 079000000480000007900000 N 3068188 +SPT000000130000002800432261 015850317003170I2109N001 +SPT000000130000002900432261 015850317003170I2127N002 +SPU00000013000000300212445809 TEMPORARY MUSIC E 00000000000197915025 021015820210316502103165 N +SPU00000013000000310212470545 UNIVERSAL MUSIC - MGB SONGS SE00000000000538724724 010000000100000001000000 N 1876597 +SPT000000130000003212470545 015820316503165I0028N001 +SPT000000130000003312470545 015820316503165I0044N002 +SPT000000130000003412470545 015820316503165I0052N003 +SPT000000130000003512470545 015820316503165I0096N004 +SPT000000130000003612470545 015820316503165I0196N005 +SPT000000130000003712470545 015820316503165I0212N006 +SPT000000130000003812470545 015820316503165I0308N007 +SPT000000130000003912470545 015820316503165I2111N008 +SPT000000130000004012470545 015820316503165I0388N009 +SPT000000130000004112470545 015820316503165I0454N010 +SPT000000130000004212470545 015820316503165I0470N011 +SPT000000130000004312470545 015820316503165I0659N012 +SPT000000130000004412470545 015820316503165I0662N013 +SPT000000130000004512470545 015820316503165I0670N014 +SPT000000130000004612470545 015820316503165I0690N015 +SPT000000130000004712470545 015820316503165I0780N016 +SPT000000130000004812470545 015820316503165I0800N017 +SPT000000130000004912470545 015820316503165I0894N018 +SPU00000013000000500200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000130000005100020412 015820316503165I0056N001 +SPT000000130000005200020412 015820316503165I0442N002 +SPU00000013000000530201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000130000005401200655 015820316503165I0528N001 +SPU00000013000000550212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000130000005612955570 015820316503165I2109N001 +SPT000000130000005712955570 015820316503165I2127N002 +OPU000000130000005803 YE 00000000000288936892 01832 03665 03665 +SWR000000130000005900083677 BRIDGEMAN DUNCAN PHILIP CA00000000000122007732052015850520000005200000 N 000000000000 +SWT000000130000006000083677 015850000000000I0028N001 +SWT000000130000006100083677 015850000000000I0044N002 +SWT000000130000006200083677 015850000000000I0052N003 +SWT000000130000006300083677 015850000000000I0096N004 +SWT000000130000006400083677 015850000000000I0196N005 +SWT000000130000006500083677 015850000000000I0212N006 +SWT000000130000006600083677 015850000000000I0308N007 +SWT000000130000006700083677 015850000000000I2111N008 +SWT000000130000006800083677 015850000000000I0388N009 +SWT000000130000006900083677 015850000000000I0454N010 +SWT000000130000007000083677 015850000000000I0470N011 +SWT000000130000007100083677 015850000000000I0659N012 +SWT000000130000007200083677 015850000000000I0662N013 +SWT000000130000007300083677 015850000000000I0670N014 +SWT000000130000007400083677 015850000000000I0690N015 +SWT000000130000007500083677 015850000000000I0780N016 +SWT000000130000007600083677 015850000000000I0800N017 +SWT000000130000007700083677 015850000000000I0894N018 +SWT000000130000007800083677 015850000000000I0056N019 +SWT000000130000007900083677 015850000000000I0442N020 +SWT000000130000008000083677 015850000000000I0528N021 +SWT000000130000008100083677 015850000000000I2109N022 +SWT000000130000008200083677 015850000000000I2127N023 +PWR000000130000008300507643 UNIVERSAL MUSIC PUBLISHING MGB LTD. 00083677 +SWR000000130000008400240696 STIPE MICHAEL CA00000000000235492073021015820990000009900000 N 000000000000 +SWT000000130000008500240696 015820000000000I0028N001 +SWT000000130000008600240696 015820000000000I0044N002 +SWT000000130000008700240696 015820000000000I0052N003 +SWT000000130000008800240696 015820000000000I0096N004 +SWT000000130000008900240696 015820000000000I0196N005 +SWT000000130000009000240696 015820000000000I0212N006 +SWT000000130000009100240696 015820000000000I0308N007 +SWT000000130000009200240696 015820000000000I2111N008 +SWT000000130000009300240696 015820000000000I0388N009 +SWT000000130000009400240696 015820000000000I0454N010 +SWT000000130000009500240696 015820000000000I0470N011 +SWT000000130000009600240696 015820000000000I0659N012 +SWT000000130000009700240696 015820000000000I0662N013 +SWT000000130000009800240696 015820000000000I0670N014 +SWT000000130000009900240696 015820000000000I0690N015 +SWT000000130000010000240696 015820000000000I0780N016 +SWT000000130000010100240696 015820000000000I0800N017 +SWT000000130000010200240696 015820000000000I0894N018 +SWT000000130000010300240696 015820000000000I0056N019 +SWT000000130000010400240696 015820000000000I0442N020 +SWT000000130000010500240696 015820000000000I0528N021 +SWT000000130000010600240696 015820000000000I2109N022 +SWT000000130000010700240696 015820000000000I2127N023 +PWR000000130000010812445809 TEMPORARY MUSIC 00240696 +OWR000000130000010912127137 BLACK WHIRIMAKO BARBARA CA00000000000181392957 00250 00000 00000 000000000000 +OWR000000130000011000062376 CATTO JAMIE CA00000000000177167935 01582 00000 00000 000000000000 +ALT0000001300000111BULLETPROOF MONK -FILM CUE ATEN +ALT0000001300000112BULLETPROOF MONK -FILM CUE ATEN +ALT0000001300000113BULLETPROOF MONK -FILM CUE ATEN +ALT0000001300000114MOVIE : BULLETPROOF MONK ATZH +PER00000013000001151 GIANT LEAP +PER0000001300000116ONE GIANT LEAP +REC000000130000011720020402 000000 1 GIANT LEAP PALM PICTURES, LTD. AU +REC000000130000011820020211 000000 ONE GIANT LEAP 020772 AU +REC000000130000011920020211 000000 ONE GIANT LEAP 020772 AU +REC000000130000012020020211 000000 ONE GIANT LEAP 020772 AU +ACK0000001400000000201606301156440000100000014NWRWIGGEDY WHACK U75063 250310KS 20160630AS +MSG0000001400000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001400000002WIGGEDY WHACK ENU75063 00000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000014000000030112445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000014000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000140000000500020412 025000500005000I0056N001 +SPT000000140000000600020412 025000500005000I0442N002 +SPU00000014000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000140000000801200655 025000500005000I0528N001 +SPU00000014000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000140000001012955570 025000500005000I2109N001 +SPT000000140000001112955570 025000500005000I2127N002 +SPU00000014000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000140000001300001509 025000500005000I0028N001 +SPT000000140000001400001509 025000500005000I0044N002 +SPT000000140000001500001509 025000500005000I0052N003 +SPT000000140000001600001509 025000500005000I0096N004 +SPT000000140000001700001509 025000500005000I0196N005 +SPT000000140000001800001509 025000500005000I0212N006 +SPT000000140000001900001509 025000500005000I0308N007 +SPT000000140000002000001509 025000500005000I2111N008 +SPT000000140000002100001509 025000500005000I0388N009 +SPT000000140000002200001509 025000500005000I0454N010 +SPT000000140000002300001509 025000500005000I0470N011 +SPT000000140000002400001509 025000500005000I0659N012 +SPT000000140000002500001509 025000500005000I0662N013 +SPT000000140000002600001509 025000500005000I0670N014 +SPT000000140000002700001509 025000500005000I0690N015 +SPT000000140000002800001509 025000500005000I0780N016 +SPT000000140000002900001509 025000500005000I0800N017 +SPT000000140000003000001509 025000500005000I0894N018 +OPU000000140000003102 YE 00000000000288936892 02500 05000 05000 +OWR000000140000003200025805 WILLIS JEZ CA00000000000159783617 02500 00000 00000 000000000000 +SWR000000140000003300240696 STIPE MICHAEL CA00000000000235492073021025000990000009900000 N 000000000000 +SWT000000140000003400240696 025000000000000I0056N001 +SWT000000140000003500240696 025000000000000I0442N002 +SWT000000140000003600240696 025000000000000I0528N003 +SWT000000140000003700240696 025000000000000I2109N004 +SWT000000140000003800240696 025000000000000I2127N005 +SWT000000140000003900240696 025000000000000I0028N006 +SWT000000140000004000240696 025000000000000I0044N007 +SWT000000140000004100240696 025000000000000I0052N008 +SWT000000140000004200240696 025000000000000I0096N009 +SWT000000140000004300240696 025000000000000I0196N010 +SWT000000140000004400240696 025000000000000I0212N011 +SWT000000140000004500240696 025000000000000I0308N012 +SWT000000140000004600240696 025000000000000I2111N013 +SWT000000140000004700240696 025000000000000I0388N014 +SWT000000140000004800240696 025000000000000I0454N015 +SWT000000140000004900240696 025000000000000I0470N016 +SWT000000140000005000240696 025000000000000I0659N017 +SWT000000140000005100240696 025000000000000I0662N018 +SWT000000140000005200240696 025000000000000I0670N019 +SWT000000140000005300240696 025000000000000I0690N020 +SWT000000140000005400240696 025000000000000I0780N021 +SWT000000140000005500240696 025000000000000I0800N022 +SWT000000140000005600240696 025000000000000I0894N023 +PWR000000140000005712445809 TEMPORARY MUSIC 00240696 +PER0000001400000058UTAH SAINTS +REC000000140000005920010403 000000 TWO NETTWERK 30199 AU +ACK0000001500000000201606301156440000100000015NWRWRONG TURN PH7416 250310KT 20160630AS +MSG0000001500000001F00000000NWRF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +NWR0000001500000002WRONG TURN ENPH7416 00000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000015000000030112445809 TEMPORARY MUSIC E 00000000000197915025 021012500210250002102500 N +SPU00000015000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000150000000500020412 012500250002500I0056N001 +SPT000000150000000600020412 012500250002500I0442N002 +SPU00000015000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000150000000801200655 012500250002500I0528N001 +SPU00000015000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000150000001012955570 012500250002500I2109N001 +SPT000000150000001112955570 012500250002500I2127N002 +SPU00000015000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000150000001300001509 012500250002500I0028N001 +SPT000000150000001400001509 012500250002500I0044N002 +SPT000000150000001500001509 012500250002500I0052N003 +SPT000000150000001600001509 012500250002500I0096N004 +SPT000000150000001700001509 012500250002500I0196N005 +SPT000000150000001800001509 012500250002500I0212N006 +SPT000000150000001900001509 012500250002500I0308N007 +SPT000000150000002000001509 012500250002500I2111N008 +SPT000000150000002100001509 012500250002500I0388N009 +SPT000000150000002200001509 012500250002500I0454N010 +SPT000000150000002300001509 012500250002500I0470N011 +SPT000000150000002400001509 012500250002500I0659N012 +SPT000000150000002500001509 012500250002500I0662N013 +SPT000000150000002600001509 012500250002500I0670N014 +SPT000000150000002700001509 012500250002500I0690N015 +SPT000000150000002800001509 012500250002500I0780N016 +SPT000000150000002900001509 012500250002500I0800N017 +SPT000000150000003000001509 012500250002500I0894N018 +OPU00000015000000310200223265 WRECKING BALL MUSIC E 00000000000240216025 01250 02500 02500 +OPU000000150000003203 YE 00000000000288936892 01250 02500 02500 +OPU00000015000000330412065348 MACNOR MUSIC E 00000000000135936558 01250 02500 02500 +SWR000000150000003400097741 BUCK PETER LAWRENCE CA00000000000008715000021012500210000002100000 N 000000000000 +SWT000000150000003500097741 012500000000000I0056N001 +SWT000000150000003600097741 012500000000000I0442N002 +SWT000000150000003700097741 012500000000000I0528N003 +SWT000000150000003800097741 012500000000000I2109N004 +SWT000000150000003900097741 012500000000000I2127N005 +SWT000000150000004000097741 012500000000000I0028N006 +SWT000000150000004100097741 012500000000000I0044N007 +SWT000000150000004200097741 012500000000000I0052N008 +SWT000000150000004300097741 012500000000000I0096N009 +SWT000000150000004400097741 012500000000000I0196N010 +SWT000000150000004500097741 012500000000000I0212N011 +SWT000000150000004600097741 012500000000000I0308N012 +SWT000000150000004700097741 012500000000000I2111N013 +SWT000000150000004800097741 012500000000000I0388N014 +SWT000000150000004900097741 012500000000000I0454N015 +SWT000000150000005000097741 012500000000000I0470N016 +SWT000000150000005100097741 012500000000000I0659N017 +SWT000000150000005200097741 012500000000000I0662N018 +SWT000000150000005300097741 012500000000000I0670N019 +SWT000000150000005400097741 012500000000000I0690N020 +SWT000000150000005500097741 012500000000000I0780N021 +SWT000000150000005600097741 012500000000000I0800N022 +SWT000000150000005700097741 012500000000000I0894N023 +PWR000000150000005812445809 TEMPORARY MUSIC 00097741 +OWR000000150000005900251673 HARDING JOHN WESLEY CA00000000000160283395 01250 00000 00000 000000000000 +OWR000000150000006000223264 MARTIN BARRETT HARRINGTON CA00000000000232830591 01250 00000 00000 000000000000 +OWR000000150000006112065347 MCCAUGHEY SCOTT LEWIS CA00000000000135487364 01250 00000 00000 000000000000 +PER0000001500000062TUATARA +PER0000001500000063VARIOUS ARTISTS +REC000000150000006420070612 000000 WEST OF THE MOON FAST HORSE AU +REC000000150000006520131101 000000 IMPORTANT WORKS UMPI 2013-11 2013-11 AU +GRT000010000001600002052 +GRHACK0000202.100000000000 +ACK0000000000000000201606301156440000200000000REVBOEING SPACEMAN 860154 20160630RJ +MSG0000000000000001F00000000REVF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +REV0000000000000002BOEING SPACEMAN EN860154 T913111019500000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 +SPU00000000000000030101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021020000210400002104000 N +SPU00000000000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000000000000500020412 020000400004000I0056N001 +SPT000000000000000600020412 020000400004000I0442N002 +SPU00000000000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000000000000801200655 020000400004000I0528N001 +SPU00000000000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000000000001012955570 020000400004000I2109N001 +SPT000000000000001112955570 020000400004000I2127N002 +SPU00000000000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000000000001300001509 020000400004000I0028N001 +SPT000000000000001400001509 020000400004000I0044N002 +SPT000000000000001500001509 020000400004000I0052N003 +SPT000000000000001600001509 020000400004000I0096N004 +SPT000000000000001700001509 020000400004000I0196N005 +SPT000000000000001800001509 020000400004000I0212N006 +SPT000000000000001900001509 020000400004000I0308N007 +SPT000000000000002000001509 020000400004000I2111N008 +SPT000000000000002100001509 020000400004000I0388N009 +SPT000000000000002200001509 020000400004000I0454N010 +SPT000000000000002300001509 020000400004000I0470N011 +SPT000000000000002400001509 020000400004000I0659N012 +SPT000000000000002500001509 020000400004000I0662N013 +SPT000000000000002600001509 020000400004000I0670N014 +SPT000000000000002700001509 020000400004000I0690N015 +SPT000000000000002800001509 020000400004000I0780N016 +SPT000000000000002900001509 020000400004000I0800N017 +SPT000000000000003000001509 020000400004000I0894N018 +SPU00000000000000310200003416 SONGS OF UNIVERSAL INC. E 00000000000353271280 021005000210100002101000 N +SPU00000000000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1781881 +SPT000000000000003300020412 005000100001000I0056N001 +SPT000000000000003400020412 005000100001000I0442N002 +SPU00000000000000350201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1781881 +SPT000000000000003601200655 005000100001000I0528N001 +SPU00000000000000370212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1781881 +SPT000000000000003812955570 005000100001000I2109N001 +SPT000000000000003912955570 005000100001000I2127N002 +SPU00000000000000400200001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1781881 +SPT000000000000004100001509 005000100001000I0028N001 +SPT000000000000004200001509 005000100001000I0044N002 +SPT000000000000004300001509 005000100001000I0052N003 +SPT000000000000004400001509 005000100001000I0096N004 +SPT000000000000004500001509 005000100001000I0196N005 +SPT000000000000004600001509 005000100001000I0212N006 +SPT000000000000004700001509 005000100001000I0308N007 +SPT000000000000004800001509 005000100001000I2111N008 +SPT000000000000004900001509 005000100001000I0388N009 +SPT000000000000005000001509 005000100001000I0454N010 +SPT000000000000005100001509 005000100001000I0470N011 +SPT000000000000005200001509 005000100001000I0659N012 +SPT000000000000005300001509 005000100001000I0662N013 +SPT000000000000005400001509 005000100001000I0670N014 +SPT000000000000005500001509 005000100001000I0690N015 +SPT000000000000005600001509 005000100001000I0780N016 +SPT000000000000005700001509 005000100001000I0800N017 +SPT000000000000005800001509 005000100001000I0894N018 +SPU00000000000000590301375658 NEED MORE SONGS E 00000000000183076466 021005000210100002101000 N +SPU00000000000000600300020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 000016025401 +SPT000000000000006100020412 005000100001000I0056N001 +SPT000000000000006200020412 005000100001000I0442N002 +SPU00000000000000630301200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 000016025401 +SPT000000000000006401200655 005000100001000I0528N001 +SPU00000000000000650312955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 000016025401 +SPT000000000000006612955570 005000100001000I2109N001 +SPT000000000000006712955570 005000100001000I2127N002 +SPU00000000000000690300001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 000016025401 +SPT000000000000007000001509 005000100001000I0028N001 +SPT000000000000007100001509 005000100001000I0044N002 +SPT000000000000007200001509 005000100001000I0052N003 +SPT000000000000007300001509 005000100001000I0096N004 +SPT000000000000007400001509 005000100001000I0196N005 +SPT000000000000007500001509 005000100001000I0212N006 +SPT000000000000007600001509 005000100001000I0308N007 +SPT000000000000007700001509 005000100001000I2111N008 +SPT000000000000007800001509 005000100001000I0388N009 +SPT000000000000007900001509 005000100001000I0454N010 +SPT000000000000008000001509 005000100001000I0470N011 +SPT000000000000008100001509 005000100001000I0659N012 +SPT000000000000008200001509 005000100001000I0662N013 +SPT000000000000008300001509 005000100001000I0670N014 +SPT000000000000008400001509 005000100001000I0690N015 +SPT000000000000008500001509 005000100001000I0780N016 +SPT000000000000008600001509 005000100001000I0800N017 +SPT000000000000008700001509 005000100001000I0894N018 +OPU00000000000000880400063905 WARNER-TAMERLANE PUBLISHING CORP. E 00000000000185314175 02000 04000 04000 +SWR000000000000008900097741 BUCK PETER LAWRENCE CA00000000000008715000021020000210000002100000 N 000000000000 +SWT000000000000009000097741 020000000000000I0056N001 +SWT000000000000009100097741 020000000000000I0442N002 +SWT000000000000009200097741 020000000000000I0528N003 +SWT000000000000009300097741 020000000000000I2109N004 +SWT000000000000009400097741 020000000000000I2127N005 +SWT000000000000009500097741 020000000000000I0028N006 +SWT000000000000009600097741 020000000000000I0044N007 +SWT000000000000009700097741 020000000000000I0052N008 +SWT000000000000009800097741 020000000000000I0096N009 +SWT000000000000009900097741 020000000000000I0196N010 +SWT000000000000010000097741 020000000000000I0212N011 +SWT000000000000010100097741 020000000000000I0308N012 +SWT000000000000010200097741 020000000000000I2111N013 +SWT000000000000010300097741 020000000000000I0388N014 +SWT000000000000010400097741 020000000000000I0454N015 +SWT000000000000010500097741 020000000000000I0470N016 +SWT000000000000010600097741 020000000000000I0659N017 +SWT000000000000010700097741 020000000000000I0662N018 +SWT000000000000010800097741 020000000000000I0670N019 +SWT000000000000010900097741 020000000000000I0690N020 +SWT000000000000011000097741 020000000000000I0780N021 +SWT000000000000011100097741 020000000000000I0800N022 +SWT000000000000011200097741 020000000000000I0894N023 +PWR000000000000011301283329 NIGHT GARDEN MUSIC 00097741 +SWR000000000000011401375657 POLLARD ROBERT E. JR. CA00000000000185817043021010000210000002100000 N 000000000000 +SWT000000000000011501375657 010000000000000I0056N001 +SWT000000000000011601375657 010000000000000I0442N002 +SWT000000000000011701375657 010000000000000I0528N003 +SWT000000000000011801375657 010000000000000I2109N004 +SWT000000000000011901375657 010000000000000I2127N005 +SWT000000000000012001375657 010000000000000I0028N006 +SWT000000000000012101375657 010000000000000I0044N007 +SWT000000000000012201375657 010000000000000I0052N008 +SWT000000000000012301375657 010000000000000I0096N009 +SWT000000000000012401375657 010000000000000I0196N010 +SWT000000000000012501375657 010000000000000I0212N011 +SWT000000000000012601375657 010000000000000I0308N012 +SWT000000000000012701375657 010000000000000I2111N013 +SWT000000000000012801375657 010000000000000I0388N014 +SWT000000000000012901375657 010000000000000I0454N015 +SWT000000000000013001375657 010000000000000I0470N016 +SWT000000000000013101375657 010000000000000I0659N017 +SWT000000000000013201375657 010000000000000I0662N018 +SWT000000000000013301375657 010000000000000I0670N019 +SWT000000000000013401375657 010000000000000I0690N020 +SWT000000000000013501375657 010000000000000I0780N021 +SWT000000000000013601375657 010000000000000I0800N022 +SWT000000000000013701375657 010000000000000I0894N023 +PWR000000000000013800003416 SONGS OF UNIVERSAL INC. 01375657 +PWR000000000000013901375658 NEED MORE SONGS 01375657 +OWR000000000000014012065347 MCCAUGHEY SCOTT LEWIS CA00000000000135487364 02000 00000 00000 000000000000 +ALT0000000000000141BOEING SPACEARIUM ATEN +PER0000000000000142THE MINUS 5 +REC000000000000014319970505 000000 THE LONESOME DEATH OF BUCK MCCOY HOLLYWOOD RECORDS AU +REC000000000000014400000000 000000 USHR10215118AU +ACK0000000100000000201606301156440000200000001REVESTATE SALE 177704 250310KU 20160630AS +MSG0000000100000001F00000000REVF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +REV0000000100000002ESTATE SALE EN177704 T070976921000000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000001000000030106015173 SEXY GRANDPA MUSIC E 00000000000338939515 010025000100500001005000 N +SPU00000001000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 750809 +SPT000000010000000500020412 025000500005000I0056N001 +SPT000000010000000600020412 025000500005000I0442N002 +SPU00000001000000070108500001 RONDOR MUSIC HOLLAND & BELGIUM SE00000000000225892256 023000000230000002300000 N 750809 +SPT000000010000000808500001 025000500005000I0528N001 +SPU00000001000000090100179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 750809 +SPT000000010000001000179554 025000500005000I2109N001 +SPT000000010000001100179554 025000500005000I2127N002 +SPU00000001000000120100029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 750809 +SPT000000010000001300029396 025000500005000I0028N001 +SPT000000010000001400029396 025000500005000I0044N002 +SPT000000010000001500029396 025000500005000I0052N003 +SPT000000010000001600029396 025000500005000I0096N004 +SPT000000010000001700029396 025000500005000I0196N005 +SPT000000010000001800029396 025000500005000I0212N006 +SPT000000010000001900029396 025000500005000I0308N007 +SPT000000010000002000029396 025000500005000I2111N008 +SPT000000010000002100029396 025000500005000I0388N009 +SPT000000010000002200029396 025000500005000I0454N010 +SPT000000010000002300029396 025000500005000I0470N011 +SPT000000010000002400029396 025000500005000I0659N012 +SPT000000010000002500029396 025000500005000I0662N013 +SPT000000010000002600029396 025000500005000I0670N014 +SPT000000010000002700029396 025000500005000I0690N015 +SPT000000010000002800029396 025000500005000I0780N016 +SPT000000010000002900029396 025000500005000I0800N017 +SPT000000010000003000029396 025000500005000I0894N018 +SPU00000001000000310212445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000001000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000010000003300020412 025000500005000I0056N001 +SPT000000010000003400020412 025000500005000I0442N002 +SPU00000001000000350201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000010000003601200655 025000500005000I0528N001 +SPU00000001000000370212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000010000003812955570 025000500005000I2109N001 +SPT000000010000003912955570 025000500005000I2127N002 +SPU00000001000000400200001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000010000004100001509 025000500005000I0028N001 +SPT000000010000004200001509 025000500005000I0044N002 +SPT000000010000004300001509 025000500005000I0052N003 +SPT000000010000004400001509 025000500005000I0096N004 +SPT000000010000004500001509 025000500005000I0196N005 +SPT000000010000004600001509 025000500005000I0212N006 +SPT000000010000004700001509 025000500005000I0308N007 +SPT000000010000004800001509 025000500005000I2111N008 +SPT000000010000004900001509 025000500005000I0388N009 +SPT000000010000005000001509 025000500005000I0454N010 +SPT000000010000005100001509 025000500005000I0470N011 +SPT000000010000005200001509 025000500005000I0659N012 +SPT000000010000005300001509 025000500005000I0662N013 +SPT000000010000005400001509 025000500005000I0670N014 +SPT000000010000005500001509 025000500005000I0690N015 +SPT000000010000005600001509 025000500005000I0780N016 +SPT000000010000005700001509 025000500005000I0800N017 +SPT000000010000005800001509 025000500005000I0894N018 +SWR000000010000005900020185 EVERETT MARK O. CA00000000000334280973010025000990000009900000 N 000000000000 +SWT000000010000006000020185 025000000000000I0056N001 +SWT000000010000006100020185 025000000000000I0442N002 +SWT000000010000006200020185 025000000000000I0528N003 +SWT000000010000006300020185 025000000000000I2109N004 +SWT000000010000006400020185 025000000000000I2127N005 +SWT000000010000006500020185 025000000000000I0028N006 +SWT000000010000006600020185 025000000000000I0044N007 +SWT000000010000006700020185 025000000000000I0052N008 +SWT000000010000006800020185 025000000000000I0096N009 +SWT000000010000006900020185 025000000000000I0196N010 +SWT000000010000007000020185 025000000000000I0212N011 +SWT000000010000007100020185 025000000000000I0308N012 +SWT000000010000007200020185 025000000000000I2111N013 +SWT000000010000007300020185 025000000000000I0388N014 +SWT000000010000007400020185 025000000000000I0454N015 +SWT000000010000007500020185 025000000000000I0470N016 +SWT000000010000007600020185 025000000000000I0659N017 +SWT000000010000007700020185 025000000000000I0662N018 +SWT000000010000007800020185 025000000000000I0670N019 +SWT000000010000007900020185 025000000000000I0690N020 +SWT000000010000008000020185 025000000000000I0780N021 +SWT000000010000008100020185 025000000000000I0800N022 +SWT000000010000008200020185 025000000000000I0894N023 +PWR000000010000008306015173 SEXY GRANDPA MUSIC 00020185 +SWR000000010000008400097741 BUCK PETER LAWRENCE CA00000000000008715000021025000210000002100000 N 000000000000 +SWT000000010000008500097741 025000000000000I0056N001 +SWT000000010000008600097741 025000000000000I0442N002 +SWT000000010000008700097741 025000000000000I0528N003 +SWT000000010000008800097741 025000000000000I2109N004 +SWT000000010000008900097741 025000000000000I2127N005 +SWT000000010000009000097741 025000000000000I0028N006 +SWT000000010000009100097741 025000000000000I0044N007 +SWT000000010000009200097741 025000000000000I0052N008 +SWT000000010000009300097741 025000000000000I0096N009 +SWT000000010000009400097741 025000000000000I0196N010 +SWT000000010000009500097741 025000000000000I0212N011 +SWT000000010000009600097741 025000000000000I0308N012 +SWT000000010000009700097741 025000000000000I2111N013 +SWT000000010000009800097741 025000000000000I0388N014 +SWT000000010000009900097741 025000000000000I0454N015 +SWT000000010000010000097741 025000000000000I0470N016 +SWT000000010000010100097741 025000000000000I0659N017 +SWT000000010000010200097741 025000000000000I0662N018 +SWT000000010000010300097741 025000000000000I0670N019 +SWT000000010000010400097741 025000000000000I0690N020 +SWT000000010000010500097741 025000000000000I0780N021 +SWT000000010000010600097741 025000000000000I0800N022 +SWT000000010000010700097741 025000000000000I0894N023 +PWR000000010000010812445809 TEMPORARY MUSIC 00097741 +PER0000000100000109EELS +PER0000000100000110VARIOUS ARTISTS +REC000000010000011120000314 000000 DAISIES OF THE GALAXY DREAMWORKS SKG 450218 AU +REC000000010000011220000228 000000 DAISIES OF THE GALAXY DREAMWORKS 4502182 AU +REC000000010000011320100101 000000 DIRECT DISTRIBUTION 99999999 AU +REC000000010000011400000000 000000 USDW10021642AU +REC000000010000011500000000 000000 USCN19000082AU +ACK0000000200000000201606301156440000200000002REVI'LL GIVE YOU MY SKIN MB1973 250310KV 20160630AS +MSG0000000200000001F00000000REVF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +REV0000000200000002I'LL GIVE YOU MY SKIN ENMB1973 T911062527900000000 POP000000YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000002000000030101283329 NIGHT GARDEN MUSIC E 00000000000130046332 021016670210333402103334 N +SPU00000002000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 379021 +SPT000000020000000500020412 016670333403334I0056N001 +SPT000000020000000600020412 016670333403334I0442N002 +SPU00000002000000070101200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 379021 +SPT000000020000000801200655 016670333403334I0528N001 +SPU00000002000000090112955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 379021 +SPT000000020000001012955570 016670333403334I2109N001 +SPT000000020000001112955570 016670333403334I2127N002 +SPU00000002000000120100001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 379021 +SPT000000020000001300001509 016670333403334I0028N001 +SPT000000020000001400001509 016670333403334I0044N002 +SPT000000020000001500001509 016670333403334I0052N003 +SPT000000020000001600001509 016670333403334I0096N004 +SPT000000020000001700001509 016670333403334I0196N005 +SPT000000020000001800001509 016670333403334I0212N006 +SPT000000020000001900001509 016670333403334I0308N007 +SPT000000020000002000001509 016670333403334I2111N008 +SPT000000020000002100001509 016670333403334I0388N009 +SPT000000020000002200001509 016670333403334I0454N010 +SPT000000020000002300001509 016670333403334I0470N011 +SPT000000020000002400001509 016670333403334I0659N012 +SPT000000020000002500001509 016670333403334I0662N013 +SPT000000020000002600001509 016670333403334I0670N014 +SPT000000020000002700001509 016670333403334I0690N015 +SPT000000020000002800001509 016670333403334I0780N016 +SPT000000020000002900001509 016670333403334I0800N017 +SPT000000020000003000001509 016670333403334I0894N018 +SPU00000002000000310202066076 GODHAP MUSIC E 00000000000226986531 021033330210666602106666 N +SPU00000002000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1781881 +SPT000000020000003300020412 033330666606666I0056N001 +SPT000000020000003400020412 033330666606666I0442N002 +SPU00000002000000350201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1781881 +SPT000000020000003601200655 033330666606666I0528N001 +SPU00000002000000370212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1781881 +SPT000000020000003812955570 033330666606666I2109N001 +SPT000000020000003912955570 033330666606666I2127N002 +SPU00000002000000400200001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1781881 +SPT000000020000004100001509 033330666606666I0028N001 +SPT000000020000004200001509 033330666606666I0044N002 +SPT000000020000004300001509 033330666606666I0052N003 +SPT000000020000004400001509 033330666606666I0096N004 +SPT000000020000004500001509 033330666606666I0196N005 +SPT000000020000004600001509 033330666606666I0212N006 +SPT000000020000004700001509 033330666606666I0308N007 +SPT000000020000004800001509 033330666606666I2111N008 +SPT000000020000004900001509 033330666606666I0388N009 +SPT000000020000005000001509 033330666606666I0454N010 +SPT000000020000005100001509 033330666606666I0470N011 +SPT000000020000005200001509 033330666606666I0659N012 +SPT000000020000005300001509 033330666606666I0662N013 +SPT000000020000005400001509 033330666606666I0670N014 +SPT000000020000005500001509 033330666606666I0690N015 +SPT000000020000005600001509 033330666606666I0780N016 +SPT000000020000005700001509 033330666606666I0800N017 +SPT000000020000005800001509 033330666606666I0894N018 +SWR000000020000005900240696 STIPE MICHAEL CA00000000000235492073021016670990000009900000 N 000000000000 +SWT000000020000006000240696 016670000000000I0056N001 +SWT000000020000006100240696 016670000000000I0442N002 +SWT000000020000006200240696 016670000000000I0528N003 +SWT000000020000006300240696 016670000000000I2109N004 +SWT000000020000006400240696 016670000000000I2127N005 +SWT000000020000006500240696 016670000000000I0028N006 +SWT000000020000006600240696 016670000000000I0044N007 +SWT000000020000006700240696 016670000000000I0052N008 +SWT000000020000006800240696 016670000000000I0096N009 +SWT000000020000006900240696 016670000000000I0196N010 +SWT000000020000007000240696 016670000000000I0212N011 +SWT000000020000007100240696 016670000000000I0308N012 +SWT000000020000007200240696 016670000000000I2111N013 +SWT000000020000007300240696 016670000000000I0388N014 +SWT000000020000007400240696 016670000000000I0454N015 +SWT000000020000007500240696 016670000000000I0470N016 +SWT000000020000007600240696 016670000000000I0659N017 +SWT000000020000007700240696 016670000000000I0662N018 +SWT000000020000007800240696 016670000000000I0670N019 +SWT000000020000007900240696 016670000000000I0690N020 +SWT000000020000008000240696 016670000000000I0780N021 +SWT000000020000008100240696 016670000000000I0800N022 +SWT000000020000008200240696 016670000000000I0894N023 +PWR000000020000008301283329 NIGHT GARDEN MUSIC 00240696 +SWR000000020000008400852451 RAY AMY ELIZABETH CA00000000000225570285021016660210000002100000 N 000000000000 +SWT000000020000008500852451 016660000000000I0056N001 +SWT000000020000008600852451 016660000000000I0442N002 +SWT000000020000008700852451 016660000000000I0528N003 +SWT000000020000008800852451 016660000000000I2109N004 +SWT000000020000008900852451 016660000000000I2127N005 +SWT000000020000009000852451 016660000000000I0028N006 +SWT000000020000009100852451 016660000000000I0044N007 +SWT000000020000009200852451 016660000000000I0052N008 +SWT000000020000009300852451 016660000000000I0096N009 +SWT000000020000009400852451 016660000000000I0196N010 +SWT000000020000009500852451 016660000000000I0212N011 +SWT000000020000009600852451 016660000000000I0308N012 +SWT000000020000009700852451 016660000000000I2111N013 +SWT000000020000009800852451 016660000000000I0388N014 +SWT000000020000009900852451 016660000000000I0454N015 +SWT000000020000010000852451 016660000000000I0470N016 +SWT000000020000010100852451 016660000000000I0659N017 +SWT000000020000010200852451 016660000000000I0662N018 +SWT000000020000010300852451 016660000000000I0670N019 +SWT000000020000010400852451 016660000000000I0690N020 +SWT000000020000010500852451 016660000000000I0780N021 +SWT000000020000010600852451 016660000000000I0800N022 +SWT000000020000010700852451 016660000000000I0894N023 +PWR000000020000010802066076 GODHAP MUSIC 00852451 +SWR000000020000010902066075 SALIERS EMILY ANN CA00000000000225575172021016660210000002100000 N 000000000000 +SWT000000020000011002066075 016660000000000I0056N001 +SWT000000020000011102066075 016660000000000I0442N002 +SWT000000020000011202066075 016660000000000I0528N003 +SWT000000020000011302066075 016660000000000I2109N004 +SWT000000020000011402066075 016660000000000I2127N005 +SWT000000020000011502066075 016660000000000I0028N006 +SWT000000020000011602066075 016660000000000I0044N007 +SWT000000020000011702066075 016660000000000I0052N008 +SWT000000020000011802066075 016660000000000I0096N009 +SWT000000020000011902066075 016660000000000I0196N010 +SWT000000020000012002066075 016660000000000I0212N011 +SWT000000020000012102066075 016660000000000I0308N012 +SWT000000020000012202066075 016660000000000I2111N013 +SWT000000020000012302066075 016660000000000I0388N014 +SWT000000020000012402066075 016660000000000I0454N015 +SWT000000020000012502066075 016660000000000I0470N016 +SWT000000020000012602066075 016660000000000I0659N017 +SWT000000020000012702066075 016660000000000I0662N018 +SWT000000020000012802066075 016660000000000I0670N019 +SWT000000020000012902066075 016660000000000I0690N020 +SWT000000020000013002066075 016660000000000I0780N021 +SWT000000020000013102066075 016660000000000I0800N022 +SWT000000020000013202066075 016660000000000I0894N023 +PWR000000020000013302066076 GODHAP MUSIC 02066075 +PER0000000200000134VARIOUS ARTISTS +PER0000000200000135INDIGO GIRLS +REC000000020000013619910430 000000 TAME YOURSELF RHINO RECORDS R2 70772 AU +REC000000020000013720051014 000000 RARITIES 6944422 AU +REC000000020000013800000000 000000 USWB10600185AU +ACK0000000300000000201606301156440000200000003REVTO LICK YOUR BOOTS G20782 250310KW 20160630AS +MSG0000000300000001F00000000REVF005COPYRIGHT DATE WAS NOT A VALID DATE - REPLACED WITH ZEROS +REV0000000300000002TO LICK YOUR BOOTS ENG20782 T072203963500000000 UNC000330YMTX ORI IWONA WYRZYKOWSKA WYRZYKOWSK N00000000000 Y +SPU00000003000000030100584449 SATAN'S COCK-A-DOODLE-DO E 00000000000480238068 010025000100500001005000 N +SPU00000003000000040100020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 750809 +SPT000000030000000500020412 025000500005000I0056N001 +SPT000000030000000600020412 025000500005000I0442N002 +SPU00000003000000070108500001 RONDOR MUSIC HOLLAND & BELGIUM SE00000000000225892256 023000000230000002300000 N 750809 +SPT000000030000000808500001 025000500005000I0528N001 +SPU00000003000000090100179554 UNIVERSAL MUSIC PUBLISHING AB SE00000000000029983244 079000000480000007900000 N 750809 +SPT000000030000001000179554 025000500005000I2109N001 +SPT000000030000001100179554 025000500005000I2127N002 +SPU00000003000000120100029396 UNIVERSAL MUSIC PUBLISHING LTD. SE00000000000282429357 052000000440000005200000 N 750809 +SPT000000030000001300029396 025000500005000I0028N001 +SPT000000030000001400029396 025000500005000I0044N002 +SPT000000030000001500029396 025000500005000I0052N003 +SPT000000030000001600029396 025000500005000I0096N004 +SPT000000030000001700029396 025000500005000I0196N005 +SPT000000030000001800029396 025000500005000I0212N006 +SPT000000030000001900029396 025000500005000I0308N007 +SPT000000030000002000029396 025000500005000I2111N008 +SPT000000030000002100029396 025000500005000I0388N009 +SPT000000030000002200029396 025000500005000I0454N010 +SPT000000030000002300029396 025000500005000I0470N011 +SPT000000030000002400029396 025000500005000I0659N012 +SPT000000030000002500029396 025000500005000I0662N013 +SPT000000030000002600029396 025000500005000I0670N014 +SPT000000030000002700029396 025000500005000I0690N015 +SPT000000030000002800029396 025000500005000I0780N016 +SPT000000030000002900029396 025000500005000I0800N017 +SPT000000030000003000029396 025000500005000I0894N018 +SPU00000003000000310212445809 TEMPORARY MUSIC E 00000000000197915025 021025000210500002105000 N +SPU00000003000000320200020412 UNIVERSAL MUSIC PUBLISHING N.V. SE00000000000418430181 055000000550000005500000 N 1876597 +SPT000000030000003300020412 025000500005000I0056N001 +SPT000000030000003400020412 025000500005000I0442N002 +SPU00000003000000350201200655 UNIVERSAL/MCA MUSIC HOLLAND B.V. SE00000000000069406754 023000000230000002300000 N 1876597 +SPT000000030000003601200655 025000500005000I0528N001 +SPU00000003000000370212955570 UNIVERSAL/MCA MUSIC SCAND AB SE00000000000244969234 079000000480000007900000 N 1876597 +SPT000000030000003812955570 025000500005000I2109N001 +SPT000000030000003912955570 025000500005000I2127N002 +SPU00000003000000400200001509 UNIVERSAL/MCA MUSIC LTD. SE00000000000282430576 052000000520000005200000 N 1876597 +SPT000000030000004100001509 025000500005000I0028N001 +SPT000000030000004200001509 025000500005000I0044N002 +SPT000000030000004300001509 025000500005000I0052N003 +SPT000000030000004400001509 025000500005000I0096N004 +SPT000000030000004500001509 025000500005000I0196N005 +SPT000000030000004600001509 025000500005000I0212N006 +SPT000000030000004700001509 025000500005000I0308N007 +SPT000000030000004800001509 025000500005000I2111N008 +SPT000000030000004900001509 025000500005000I0388N009 +SPT000000030000005000001509 025000500005000I0454N010 +SPT000000030000005100001509 025000500005000I0470N011 +SPT000000030000005200001509 025000500005000I0659N012 +SPT000000030000005300001509 025000500005000I0662N013 +SPT000000030000005400001509 025000500005000I0670N014 +SPT000000030000005500001509 025000500005000I0690N015 +SPT000000030000005600001509 025000500005000I0780N016 +SPT000000030000005700001509 025000500005000I0800N017 +SPT000000030000005800001509 025000500005000I0894N018 +SWR000000030000005900020185 EVERETT MARK O. CA00000000000334280973010025000990000009900000 N 000000000000 +SWT000000030000006000020185 025000000000000I0056N001 +SWT000000030000006100020185 025000000000000I0442N002 +SWT000000030000006200020185 025000000000000I0528N003 +SWT000000030000006300020185 025000000000000I2109N004 +SWT000000030000006400020185 025000000000000I2127N005 +SWT000000030000006500020185 025000000000000I0028N006 +SWT000000030000006600020185 025000000000000I0044N007 +SWT000000030000006700020185 025000000000000I0052N008 +SWT000000030000006800020185 025000000000000I0096N009 +SWT000000030000006900020185 025000000000000I0196N010 +SWT000000030000007000020185 025000000000000I0212N011 +SWT000000030000007100020185 025000000000000I0308N012 +SWT000000030000007200020185 025000000000000I2111N013 +SWT000000030000007300020185 025000000000000I0388N014 +SWT000000030000007400020185 025000000000000I0454N015 +SWT000000030000007500020185 025000000000000I0470N016 +SWT000000030000007600020185 025000000000000I0659N017 +SWT000000030000007700020185 025000000000000I0662N018 +SWT000000030000007800020185 025000000000000I0670N019 +SWT000000030000007900020185 025000000000000I0690N020 +SWT000000030000008000020185 025000000000000I0780N021 +SWT000000030000008100020185 025000000000000I0800N022 +SWT000000030000008200020185 025000000000000I0894N023 +PWR000000030000008300584449 SATAN'S COCK-A-DOODLE-DO 00020185 +SWR000000030000008400097741 BUCK PETER LAWRENCE CA00000000000008715000021025000210000002100000 N 000000000000 +SWT000000030000008500097741 025000000000000I0056N001 +SWT000000030000008600097741 025000000000000I0442N002 +SWT000000030000008700097741 025000000000000I0528N003 +SWT000000030000008800097741 025000000000000I2109N004 +SWT000000030000008900097741 025000000000000I2127N005 +SWT000000030000009000097741 025000000000000I0028N006 +SWT000000030000009100097741 025000000000000I0044N007 +SWT000000030000009200097741 025000000000000I0052N008 +SWT000000030000009300097741 025000000000000I0096N009 +SWT000000030000009400097741 025000000000000I0196N010 +SWT000000030000009500097741 025000000000000I0212N011 +SWT000000030000009600097741 025000000000000I0308N012 +SWT000000030000009700097741 025000000000000I2111N013 +SWT000000030000009800097741 025000000000000I0388N014 +SWT000000030000009900097741 025000000000000I0454N015 +SWT000000030000010000097741 025000000000000I0470N016 +SWT000000030000010100097741 025000000000000I0659N017 +SWT000000030000010200097741 025000000000000I0662N018 +SWT000000030000010300097741 025000000000000I0670N019 +SWT000000030000010400097741 025000000000000I0690N020 +SWT000000030000010500097741 025000000000000I0780N021 +SWT000000030000010600097741 025000000000000I0800N022 +SWT000000030000010700097741 025000000000000I0894N023 +PWR000000030000010812445809 TEMPORARY MUSIC 00097741 +PER0000000300000109EELS +PER0000000300000110VARIOUS ARTISTS +PER0000000300000111FEATURE FILM +REC000000030000011220050426 000330 BLINKING LIGHTS AND OTHER REVELATIONS VAGRANT 406 AU +REC000000030000011320050420 000000 BLINKING LIGHTS AND OTHER REVELATIONS VAGRANT RECORDS 9881785 AU +REC000000030000011420100101 000000 DIRECT DISTRIBUTION 99999999 AU +REC000000030000011520081216 000000 YES MAN 6340542 AU +REC000000030000011620081219 000056 YES MAN WARNER BROS STUDIO 00148683 AU +REC000000030000011700000000 000000 USVR90540623AU +REC000000030000011800000000 000000 USLS50805403AU +GRT000020000000400000521 +TRL000020000002000002575 diff --git a/tests/grammar/factory/control/test_transmission.py b/tests/grammar/factory/control/test_transmission.py index b27ab56..128c8ad 100644 --- a/tests/grammar/factory/control/test_transmission.py +++ b/tests/grammar/factory/control/test_transmission.py @@ -85,6 +85,7 @@ def test_common_short_2(self): group_2 + '\n' + \ 'TRL000010032029801599288' + self.grammar.setDebug(True) result = self.grammar.parseString(record)[0] self.assertEqual('HDR', result.header.record_type) diff --git a/tests/grammar/factory/control/test_transmission_groups.py b/tests/grammar/factory/control/test_transmission_groups.py index 6929b74..5ad8187 100644 --- a/tests/grammar/factory/control/test_transmission_groups.py +++ b/tests/grammar/factory/control/test_transmission_groups.py @@ -19,6 +19,7 @@ class TestGroupsGrammar(unittest.TestCase): def setUp(self): self.grammar = get_record_grammar('groups') + #self.grammar.setDebug(True) def test_agreement_min(self): group1 = 'GRHAGR0000102.100130400001 ' + '\n' + \ @@ -47,8 +48,8 @@ def test_2(self): _agreement_short() + '\n' + \ 'GRT012340123456701234567 ' group2 = 'GRHNWR0000102.100130400001 ' + '\n' + \ - _work_big() + '\n' + \ - 'GRT012340123456701234567 ' + _work_big() + '\n' + \ + 'GRT012340123456701234567 ' record = group1 + '\n' + group2 diff --git a/tests/grammar/factory/transaction/test_administrator_information.py b/tests/grammar/factory/transaction/test_administrator_information.py index 7bdcd4e..31ff687 100644 --- a/tests/grammar/factory/transaction/test_administrator_information.py +++ b/tests/grammar/factory/transaction/test_administrator_information.py @@ -68,8 +68,9 @@ def test_nra(self): publisher = 'SPU000012340000002319A12345678PUBLISHER NAME AQ92370341200014107338A0123456789123009020500100300001102312BY I-000000229-7A0123456789124A0123456789125OSB' npn = 'NPN000012340000002312A12345678THE NAME ES' - record = publisher + '\n' + npn + record = publisher + '\n' + npn + '\n' + self.grammar.setDebug(True) result = self.grammar.parseString(record) self.assertEqual(2, len(result)) diff --git a/tests/parser/cwrjson/encoder/test_json.py b/tests/parser/cwrjson/encoder/test_json.py index 49df4ad..a168576 100644 --- a/tests/parser/cwrjson/encoder/test_json.py +++ b/tests/parser/cwrjson/encoder/test_json.py @@ -36,8 +36,8 @@ def test_file_agreement(self): encoded = self._encoder.encode(data) expected = json.loads( - '{"transmission": {"header": {"creation_date_time": "2003-02-16", "sender_name": "SENDER", "sender_id": "ABC334", "sender_type": "SO", "record_type": "HDR", "edi_standard": "01.10", "transmission_date": "2003-02-17", "character_set": "ASCII"}, "groups": [{"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15}, "transactions": [[{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}], [{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "AGR"}}, {"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15}, "transactions": [[{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}], [{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "AGR"}}], "trailer": {"record_type": "TRL", "group_count": 155, "record_count": 568, "transaction_count": 245}}, "tag": {"sequence_n": 123, "receiver": "RCV", "sender": "SND", "version": 2.1, "year": 2015}}') - + '{"transmission": {"header": {"creation_date_time": "2003-02-16", "sender_name": "SENDER", "sender_id": "ABC334", "sender_type": "SO", "record_type": "HDR", "edi_standard": "01.10", "transmission_date": "2003-02-17", "character_set": "ASCII"}, "groups": [{"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15, "currency_indicator": null, "total_monetary_value": null}, "transactions": [[{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}], [{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "AGR"}}, {"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15, "transaction_count": 15, "currency_indicator": null, "total_monetary_value": null}, "transactions": [[{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}], [{"sales_manufacture_clause": "M", "date_of_signature": "2003-02-17", "prior_royalty_start_date": "2003-02-19", "advance_given": true, "retention_end_date": "2003-02-18", "international_standard_code": "DFG135", "prior_royalty_status": "D", "agreement_end_date": "2003-02-16", "record_type": "AGR", "shares_change": true, "post_term_collection_status": "D", "agreement_type": "OS", "submitter_agreement_n": "AB12", "society_assigned_agreement_n": "DF35", "record_sequence_n": 15, "agreement_start_date": "2003-02-15", "transaction_sequence_n": 3, "post_term_collection_end_date": "2003-02-20", "number_of_works": 12}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "AGR"}}], "trailer": {"record_type": "TRL", "group_count": 155, "record_count": 568, "transaction_count": 245}}, "tag": {"sequence_n": 123, "receiver": "RCV", "sender": "SND", "version": 2.1, "year": 2015}}') + self.maxDiff = None self.assertEqual(expected, json.loads(encoded)) def test_file_work_with_nones(self): @@ -49,7 +49,7 @@ def test_file_work_with_nones(self): encoded = self._encoder.encode(data) expected = json.loads( - '{"transmission": {"header": {"creation_date_time": "2003-02-16", "sender_name": "SENDER", "sender_id": "ABC334", "sender_type": "SO", "record_type": "HDR", "edi_standard": "01.10", "transmission_date": "2003-02-17", "character_set": "ASCII"}, "groups": [{"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15}, "transactions": [[{"opus_number": "OP35", "recorded_indicator": "Y", "contact_id": "123CONTACT", "record_sequence_n": 15, "music_arrangement": "ORI", "language_code": "ES", "duration": "01:12:00", "contact_name": "THE CONTACT", "composite_type": "MED", "lyric_adaptation": "MOD", "title": "TITLE", "transaction_sequence_n": 3, "excerpt_type": "MOV", "submitter_work_n": "ABC123", "priority_flag": "Y", "copyright_number": "ABDF146", "text_music_relationship": "MTX", "work_type": "BL", "grand_rights_indicator": true, "date_publication_printed_edition": "2003-02-16", "musical_work_distribution_category": "SER", "catalogue_number": "GGH97", "composite_component_count": 5, "exceptional_clause": "Y", "record_type": "NWR", "iswc": null, "version_type": "ORI", "copyright_date": "2003-02-17"}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "NWR"}}], "trailer": {"record_type": "TRL", "group_count": 155, "record_count": 568, "transaction_count": 245}}, "tag": {"sequence_n": 123, "receiver": "RCV", "sender": "SND", "version": 2.1, "year": 2015}}') + '{"transmission": {"header": {"creation_date_time": "2003-02-16", "sender_name": "SENDER", "sender_id": "ABC334", "sender_type": "SO", "record_type": "HDR", "edi_standard": "01.10", "transmission_date": "2003-02-17", "character_set": "ASCII"}, "groups": [{"group_trailer": {"record_count": 20, "record_type": "GRT", "group_id": 3, "transaction_count": 15, "currency_indicator": null, "total_monetary_value": null}, "transactions": [[{"opus_number": "OP35", "recorded_indicator": "Y", "contact_id": "123CONTACT", "record_sequence_n": 15, "music_arrangement": "ORI", "language_code": "ES", "duration": "01:12:00", "contact_name": "THE CONTACT", "composite_type": "MED", "lyric_adaptation": "MOD", "title": "TITLE", "transaction_sequence_n": 3, "excerpt_type": "MOV", "submitter_work_n": "ABC123", "priority_flag": "Y", "copyright_number": "ABDF146", "text_music_relationship": "MTX", "work_type": "BL", "grand_rights_indicator": true, "date_publication_printed_edition": "2003-02-16", "musical_work_distribution_category": "SER", "catalogue_number": "GGH97", "composite_component_count": 5, "exceptional_clause": "Y", "record_type": "NWR", "iswc": null, "version_type": "ORI", "copyright_date": "2003-02-17"}]], "group_header": {"record_type": "GRH", "version_number": "02.10", "group_id": 3, "batch_request_id": 15, "transaction_type": "NWR"}}], "trailer": {"record_type": "TRL", "group_count": 155, "record_count": 568, "transaction_count": 245}}, "tag": {"sequence_n": 123, "receiver": "RCV", "sender": "SND", "version": 2.1, "year": 2015}}') self.assertEqual(expected, json.loads(encoded)) diff --git a/tests/parser/file/encoder/test_file.py b/tests/parser/file/encoder/test_file.py new file mode 100644 index 0000000..951dc5d --- /dev/null +++ b/tests/parser/file/encoder/test_file.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +import codecs +import os + +import unittest +import datetime +import json +import sys +from cwr.parser.decoder.file import default_file_decoder + +from cwr.parser.encoder.file import CwrFileEncoder, default_file_encoder +from cwr.file import FileTag, CWRFile +from cwr.group import GroupHeader, GroupTrailer, Group +from cwr.work import WorkRecord +from cwr.agreement import AgreementRecord +from cwr.transmission import TransmissionTrailer, TransmissionHeader, \ + Transmission + +""" +Group from cwr encoding tests. + +The following cases are tested: +""" + +__author__ = 'Yaroslav O. Holub' +__license__ = 'MIT' +__status__ = 'Development' + + +class TestCwrEncoding(unittest.TestCase): + def setUp(self): + self._encoder = default_file_encoder() + self._decoder = default_file_decoder() + + def get_data(self): + current_dir = os.path.dirname(__file__) + example_path = os.path.join(current_dir, '..', '..', '..', 'examples', 'ackexample.V21') + data = {} + data['filename'] = os.path.basename(example_path) + data['contents'] = codecs.open(example_path, 'r', 'latin-1').read() + return data + + def test_file_encoding(self): + decoder = default_file_decoder() + data = self.get_data() + + original_lines = data['contents'].split("\n") + for i in range(len(original_lines)): + print(original_lines[i]) + + entities = decoder.decode(data) + file_encoder = default_file_encoder() + result = file_encoder.encode(entities.transmission) + original_lines = data['contents'].split("\n") + encoded_lines = result.split("\n") + + self.assertEqual(len(original_lines), len(encoded_lines)) + for i in range(1, len(original_lines)): + self.assertEquals(original_lines[i].strip(), encoded_lines[i].strip()) + + + + + From beaaee52151346b7f7f8153d90af7db3c7796673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=AF=D1=80=D0=BE=D1=81=D0=BB=D0=B0=D0=B2?= Date: Tue, 23 Aug 2016 13:41:51 +0300 Subject: [PATCH 03/22] Add skeleton validation acknowledgment --- config_cwr/acknowledge_config_example.yml | 17 +++++++ cwr/acknowledge/file.py | 44 +++++++++---------- cwr/grammar/factory/rule.py | 1 - cwr/validation/common.py | 13 ++++++ cwr/validation/transaction.py | 10 +++-- .../factory/control/test_transmission.py | 1 - .../control/test_transmission_groups.py | 5 +-- .../test_administrator_information.py | 1 - 8 files changed, 58 insertions(+), 34 deletions(-) diff --git a/config_cwr/acknowledge_config_example.yml b/config_cwr/acknowledge_config_example.yml index 7347bad..ded3876 100644 --- a/config_cwr/acknowledge_config_example.yml +++ b/config_cwr/acknowledge_config_example.yml @@ -3,3 +3,20 @@ sender_name: 'UMA EXAMPLE' sender_id: 999 sender_type: 'SO' version: 2.1 +tis: + world: 2136 + uzbekistan: 860 + ukraine: 804 + turkmenistan: 795 + tajikistan: 762 + russia: 643 + moldova: 498 + kazakhstan: 417 + kazahstan: 398 + georgia: 268 + belarus: 112 + armenia: 51 + azerbaijan: 32 + + + diff --git a/cwr/acknowledge/file.py b/cwr/acknowledge/file.py index b6c8689..f8eab76 100644 --- a/cwr/acknowledge/file.py +++ b/cwr/acknowledge/file.py @@ -7,12 +7,14 @@ from cwr.acknowledgement import AcknowledgementRecord, MessageRecord from cwr.file import CWRFile, FileTag from cwr.group import Group, GroupHeader, GroupTrailer +from cwr.interested_party import IPTerritoryOfControlRecord from cwr.parser.encoder.file import default_file_encoder from cwr.record import TransactionRecord from cwr.transmission import Transmission, TransmissionTrailer, TransmissionHeader from cwr.utils.printer import CWRPrinter -from cwr.validation.common import ValidationStatus +from cwr.validation.common import ValidationStatus, NPValidationStatus +from cwr.validation.transaction import ValidationTransaction """ Class generate acknowledgement file" @@ -62,8 +64,23 @@ def _sender(self): def _version(): return "2.1" + def validate_tis(self, transaction): + tis_number = self.config['tis'].values() + for record in transaction: + if isinstance(record, IPTerritoryOfControlRecord): + if record.tis_numeric_code in tis_number: + return True + return False + + def validate(self, transaction): + validation = ValidationTransaction(self.config) + return validation.validate(transaction) + def validate_transaction(self, transaction): - return ValidationStatus('AS') + if self.validate_tis(transaction): + return self.validate(transaction) + else: + return NPValidationStatus() def acknowledge_cwr_file(self, cwr_file): assert isinstance(cwr_file, CWRFile) @@ -86,30 +103,9 @@ def encode(self, path): sys.stdout = output file_encoder = default_file_encoder() result = file_encoder.encode(self._acknowledge.transmission) + print(result) sys.stdout = out_old - #self.acknowledge_transmission(cwr_file.transmission) - - # def acknowledge_transmission(self, transmission): - # assert isinstance(transmission, Transmission) - # for group in transmission.groups: - # ack_group = self.acknowledge_group(group) - # self._acknowledge.transmission.groups.append(ack_group) - # self._acknowledge.transmission.trailer.group_count = transmission.trailer.group_count - # - # def acknowledge_group(self, group): - # assert isinstance(group, Group) - # ack_header = GroupHeader() - # ack_group = Group() - # for transaction in group.transactions: - # self.acknowledge_transaction(transaction) - # - # def acknowledge_transaction(self, transaction): - # pass - # - # def get(self): - # return CWRFile - class AcknowledgeTransmission(Transmission): group_sequence = SequenceGenerator(0) diff --git a/cwr/grammar/factory/rule.py b/cwr/grammar/factory/rule.py index 9a2e9ee..61a3ffd 100644 --- a/cwr/grammar/factory/rule.py +++ b/cwr/grammar/factory/rule.py @@ -150,7 +150,6 @@ def _build_rule(self, rule_id): rule.setName(rule_id) if self._debug: - #rule.setDebugActions(False, False, False) rule.setDebug() return rule diff --git a/cwr/validation/common.py b/cwr/validation/common.py index 67fdebc..e678cc0 100644 --- a/cwr/validation/common.py +++ b/cwr/validation/common.py @@ -23,6 +23,19 @@ def __init__(self, code, message=''): self.message = message +class ASValidationStatus(ValidationStatus): + + def __init__(self, message = None): + super().__init__() + self.code = 'AS' + +class NPValidationStatus(ValidationStatus): + + def __init__(self, message = None): + super().__init__() + self.code = 'NP' + + class Validation(object): """ Interface for implementing validation. This is abstract class. diff --git a/cwr/validation/transaction.py b/cwr/validation/transaction.py index 1264570..399c4b1 100644 --- a/cwr/validation/transaction.py +++ b/cwr/validation/transaction.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from apt_pkg import __init__ -from cwr.validation.common import Validation +from cwr.validation.common import Validation, ValidationStatus, ASValidationStatus """ Base classes for implementing validation rules. @@ -15,10 +15,12 @@ class ValidationTransaction(Validation): - def __init__(self): - pass + config = None + + def __init__(self, config): + self.config = config def validate(self, transaction): - pass + return ASValidationStatus() diff --git a/tests/grammar/factory/control/test_transmission.py b/tests/grammar/factory/control/test_transmission.py index 128c8ad..b27ab56 100644 --- a/tests/grammar/factory/control/test_transmission.py +++ b/tests/grammar/factory/control/test_transmission.py @@ -85,7 +85,6 @@ def test_common_short_2(self): group_2 + '\n' + \ 'TRL000010032029801599288' - self.grammar.setDebug(True) result = self.grammar.parseString(record)[0] self.assertEqual('HDR', result.header.record_type) diff --git a/tests/grammar/factory/control/test_transmission_groups.py b/tests/grammar/factory/control/test_transmission_groups.py index 5ad8187..6929b74 100644 --- a/tests/grammar/factory/control/test_transmission_groups.py +++ b/tests/grammar/factory/control/test_transmission_groups.py @@ -19,7 +19,6 @@ class TestGroupsGrammar(unittest.TestCase): def setUp(self): self.grammar = get_record_grammar('groups') - #self.grammar.setDebug(True) def test_agreement_min(self): group1 = 'GRHAGR0000102.100130400001 ' + '\n' + \ @@ -48,8 +47,8 @@ def test_2(self): _agreement_short() + '\n' + \ 'GRT012340123456701234567 ' group2 = 'GRHNWR0000102.100130400001 ' + '\n' + \ - _work_big() + '\n' + \ - 'GRT012340123456701234567 ' + _work_big() + '\n' + \ + 'GRT012340123456701234567 ' record = group1 + '\n' + group2 diff --git a/tests/grammar/factory/transaction/test_administrator_information.py b/tests/grammar/factory/transaction/test_administrator_information.py index 31ff687..aa42a12 100644 --- a/tests/grammar/factory/transaction/test_administrator_information.py +++ b/tests/grammar/factory/transaction/test_administrator_information.py @@ -70,7 +70,6 @@ def test_nra(self): record = publisher + '\n' + npn + '\n' - self.grammar.setDebug(True) result = self.grammar.parseString(record) self.assertEqual(2, len(result)) From 345d676aca3cc16b2cac599c139503569ed6daa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 18:32:45 +0200 Subject: [PATCH 04/22] Changed the metod used to split lines --- tests/parser/file/encoder/test_file.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/parser/file/encoder/test_file.py b/tests/parser/file/encoder/test_file.py index 951dc5d..7326389 100644 --- a/tests/parser/file/encoder/test_file.py +++ b/tests/parser/file/encoder/test_file.py @@ -44,7 +44,7 @@ def test_file_encoding(self): decoder = default_file_decoder() data = self.get_data() - original_lines = data['contents'].split("\n") + original_lines = data['contents'].splitlines() for i in range(len(original_lines)): print(original_lines[i]) From af59aed301fd7c3c818fb0bf665fffa92190f1ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 19:46:02 +0200 Subject: [PATCH 05/22] Disabled Python 2.6 tests --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6ed3f3e..5852f88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: python python: - - "2.6" + #- "2.6" - "2.7" - "3.2" - "3.3" From d8d7c226588420cde7a58b3daacec6fb9be19985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 19:55:14 +0200 Subject: [PATCH 06/22] Python 3.2 is no longer used for the tests --- .travis.yml | 1 - tox.ini | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5852f88..dd70cf9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ language: python python: #- "2.6" - "2.7" - - "3.2" - "3.3" - "3.4" - "pypy" diff --git a/tox.ini b/tox.ini index 775f03a..772b643 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] envlist = {py26,py27,pypy}, - {py32,py33,py34,pypy3}, + {py33,py34,pypy3}, {docs}, {coverage} skip_missing_interpreters = From 2994af785a7aae5d3208d1e4c9cc09355ccff378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 20:03:48 +0200 Subject: [PATCH 07/22] Changed coverage configuration --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 772b643..62102d4 100644 --- a/tox.ini +++ b/tox.ini @@ -24,7 +24,7 @@ deps = commands = nosetests --with-coverage --cover-package=cwr coverage combine - coverage report --omit=*test* + coverage report coveralls [testenv:check] From 94382a58d41e33ecd22b0c01e6a125d67820221d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 20:42:20 +0200 Subject: [PATCH 08/22] Changed coverage script --- tox.ini | 2 -- 1 file changed, 2 deletions(-) diff --git a/tox.ini b/tox.ini index 62102d4..723e960 100644 --- a/tox.ini +++ b/tox.ini @@ -23,8 +23,6 @@ deps = coveralls commands = nosetests --with-coverage --cover-package=cwr - coverage combine - coverage report coveralls [testenv:check] From a5b8045d63fe9a56661f87d7a3c781369ee4780b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 20:54:33 +0200 Subject: [PATCH 09/22] Scripts are now taken from a repository --- .scripts/deploy_docs.sh | 13 ----------- .scripts/run_tests.sh | 8 ------- .travis.yml | 49 +++++++++++++++++++++++++++-------------- 3 files changed, 33 insertions(+), 37 deletions(-) delete mode 100644 .scripts/deploy_docs.sh delete mode 100644 .scripts/run_tests.sh diff --git a/.scripts/deploy_docs.sh b/.scripts/deploy_docs.sh deleted file mode 100644 index b929911..0000000 --- a/.scripts/deploy_docs.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# This script deploys the documentation - -if [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ "$DEPLOY_DOCS" == "true" ] && [[ "$TRAVIS_BRANCH" == "master" || "$TRAVIS_BRANCH" == "develop" ]]; then - - echo "Deploying docs" - curl -X POST http://readthedocs.org/build/cwr-dataapi - -else - - echo "Docs won't be deployed" - -fi \ No newline at end of file diff --git a/.scripts/run_tests.sh b/.scripts/run_tests.sh deleted file mode 100644 index e86b437..0000000 --- a/.scripts/run_tests.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# This script runs the normal tests - -if [ -z "$DOCS" ] && [ -z "$DEPLOY_DOCS" ] && [ -z "$COVERAGE" ]; then - - tox -e $(echo py$TRAVIS_PYTHON_VERSION | tr -d . | sed -e 's/pypypy/pypy/') - -fi diff --git a/.travis.yml b/.travis.yml index dd70cf9..7414646 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,30 +1,47 @@ +# Travis CI Configuration file +# @link https://travis-ci.org/ + +# Using Python for the project language: python python: - #- "2.6" - - "2.7" + - "2.6" + # Python 2.7 is set to test and deploy the docs, and to run the coverage report, in the configuration matrix + #- "2.7" + # Python 3.2 is no longer supported by pip + #- "3.2" - "3.3" - - "3.4" + # Python 3.4 is set to test the docs in the configuration matrix + #- "3.4" + - "3.5" - "pypy" - "pypy3" matrix: - exclude: - - python: "2.7" include: + # Tests and deploys docs, also runs coverage report - python: "2.7" - env: - - COVERAGE=true - - DOCS=true - - DEPLOY_DOCS=true + env: COVERAGE=true TEST_DOCS=true DEPLOY_DOCS=true + # Tests docs - python: "3.4" - env: DOCS=true + env: TEST_DOCS=true before_install: - - chmod +x ./.scripts/run_tests.sh - - chmod +x ./.scripts/deploy_docs.sh + # Gets scripts + - git clone -b v0.2.0 --single-branch https://github.com/Bernardo-MG/ci-shell-scripts.git ~/.scripts + # Sets scripts as executable + - chmod -R +x ~/.scripts/* + # Prepares CI environment + - source ~/.scripts/travis/load-travis-environment.sh + - source ~/.scripts/travis/load-travis-environment-python.sh install: + # tox is required for the tests - pip install tox script: - - ./.scripts/run_tests.sh - - if [ ! -z "$DOCS" ]; then tox -e docs; fi - - if [ ! -z "$DEPLOY_DOCS" ]; then ./.scripts/deploy_docs.sh; fi - - if [ ! -z "$COVERAGE" ]; then tox -e coverage; fi \ No newline at end of file + # Tests are run + - ~/.scripts/python/run_tests.sh true $PYTHON_VERSION_TEST + # Documentation tests are run + - ~/.scripts/python/run_tests.sh $DO_TEST_DOCS docs + # Documentation tests are run + - ~/.scripts/python/run_tests.sh $DO_COVERAGE coverage +after_success: + # Documentation deployment + - ~/.scripts/rtd/deploy.sh $DO_DEPLOY_DOCS {{cookiecutter.package_name}} \ No newline at end of file From 46e74d9b3b4548105120d7bb15bc224e5b92803c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 21:03:49 +0200 Subject: [PATCH 10/22] Disabled Python 2.6 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7414646..7d49d8b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,8 @@ # Using Python for the project language: python python: - - "2.6" + # Disabled for now + #- "2.6" # Python 2.7 is set to test and deploy the docs, and to run the coverage report, in the configuration matrix #- "2.7" # Python 3.2 is no longer supported by pip From 34025dac1549073ec2e67b2f400fff2c5aaae87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 22:48:13 +0200 Subject: [PATCH 11/22] Added information about how to use the parse --- README.rst | 71 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 17 deletions(-) diff --git a/README.rst b/README.rst index 8ab30f0..d4a2e34 100644 --- a/README.rst +++ b/README.rst @@ -1,18 +1,6 @@ CWR Data Model API ================== -.. image:: https://badge.fury.io/py/cwr-api.svg - :target: https://pypi.python.org/pypi/cwr-api - :alt: CWR-API Pypi package page - -.. image:: https://readthedocs.org/projects/cwr-dataapi/badge/?version=latest - :target: http://cwr-dataapi.readthedocs.org/en/latest/ - :alt: CWR-API latest documentation Status - -.. image:: https://badges.gitter.im/Join%20Chat.svg - :target: https://gitter.im/weso/CWR-DataApi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge - :alt: Join the chat at https://gitter.im/weso/CWR-DataApi - This projects offers a domain model for the CISAC CWR standard v2.1 to be used on Python applications, along a series of parsing which allow transformations between the model and various data structures. @@ -25,6 +13,18 @@ works data. While the CWR standard has been created by `CISAC`_ this library has been developed by `WESO`_ independently, with help from `BMAT`_. +.. image:: https://badge.fury.io/py/cwr-api.svg + :target: https://pypi.python.org/pypi/cwr-api + :alt: CWR-API Pypi package page + +.. image:: https://readthedocs.org/projects/cwr-dataapi/badge/?version=latest + :target: http://cwr-dataapi.readthedocs.org/en/latest/ + :alt: CWR-API latest documentation Status + +.. image:: https://badges.gitter.im/Join%20Chat.svg + :target: https://gitter.im/weso/CWR-DataApi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + :alt: Join the chat at https://gitter.im/weso/CWR-DataApi + Features -------- @@ -40,11 +40,11 @@ Check the `latest docs`_ for the most current version of the documentation. They are generated with the help of `Sphinx`_. The source files for this are stored in the docs folder. -Building the code ------------------ +Usage +----- -The application has been coded in Python, without using any particular -framework. +The application has been coded in Python. Dependencies are taken care with the +use of pip, and an included makefile helps building the project. Prerequisites ~~~~~~~~~~~~~ @@ -53,9 +53,9 @@ The project has been tested in the following versions of the interpreter: - Python 2.6 - Python 2.7 -- Python 3.2 - Python 3.3 - Python 3.4 +- Python 3.5 - Pypy - Pypy 3 @@ -81,6 +81,43 @@ Additionally, the project is offered as a `Pypi package`_, and can be installed ``$ pip install cwr-api`` +Making use of the parser +~~~~~~~~~~~~~~~~~~~~~~~~ + +Once the project is installed it can be used in a similar way to this (using Python 2.7): + + import codecs + import os + + from cwr.parser.decoder.file import default_file_decoder + from cwr.parser.encoder.cwrjson import JSONEncoder + + if __name__ == '__main__': + print('File to JSON test') + path = raw_input( + 'Please enter the full path to a CWR file (e.g. c:/documents/file.cwr): ') + output = raw_input( + 'Please enter the full path to the file where the results will be stored: ') + print('\n') + print('Reading file %s' % path) + print('Storing output on %s' % output) + print('\n') + + decoder = default_file_decoder() + + data = {} + data['filename'] = os.path.basename(path) + data['contents'] = codecs.open(path, 'r', 'latin-1').read() + + data = decoder.decode(data) + + encoder = JSONEncoder() + result = encoder.encode(data) + + output = codecs.open(output, 'w', 'latin-1') + + output.write(result) + Collaborate ----------- From 010407262959d2e5fce7c4e75b731851d10e5b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 28 Aug 2016 22:55:28 +0200 Subject: [PATCH 12/22] Corrected code block --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index d4a2e34..a769fc2 100644 --- a/README.rst +++ b/README.rst @@ -84,7 +84,7 @@ Additionally, the project is offered as a `Pypi package`_, and can be installed Making use of the parser ~~~~~~~~~~~~~~~~~~~~~~~~ -Once the project is installed it can be used in a similar way to this (using Python 2.7): +Once the project is installed it can be used in a similar way to this (using Python 2.7):: import codecs import os From a29530b8c0f8b6e1996382792a2eb52e48fc5110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:36:31 +0200 Subject: [PATCH 13/22] Updated build configuration --- Makefile | 20 ++++++++++---------- make.bat | 4 ++-- requirements.txt | 4 ++-- setup.py | 4 ++-- tox.ini | 18 +++++++++++------- 5 files changed, 27 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index c474cd5..ca58693 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ DISTDIR = dist # Sets the .egg file path. # The file will be located at the project's root. -EGGDIR = CWR_API.egg-info +EGGDIR = dice-notation.egg-info # Sets the tox folder path. # It will be the '.tox' folder. @@ -25,14 +25,14 @@ TOXDIR = .tox # Sets the docs output folder path. # It will be in the 'docs' folder. DOCBUILDDIR = docs\\build - + # User-friendly check for sphinx-build ifeq ($(shell which $(PYTHON) >/dev/null 2>&1; echo $$?), 1) $(error The '$(PYTHON)' command was not found. Make sure you have a version of the python interpreter installed, then add the directory where it was installed to the PATH.) endif - -.PHONY: help clean - + +.PHONY: help clean + # Help option # Shows the allowed commands to be received as parameters help: @@ -66,24 +66,24 @@ install: # Install the project requirements requirements: pip install --upgrade -r requirements.txt - + # Pypi registration. register: $(PYTHON) setup.py register -r pypi - + # Pypitest registration. register-test: $(PYTHON) setup.py register -r testpypi - + # Pypi deployment. deploy: $(PYTHON) setup.py sdist twine upload dist/* - + # Pypitest deployment. deploy-test: $(PYTHON) setup.py sdist upload -r testpypi # Tests suite. test: - tox + tox \ No newline at end of file diff --git a/make.bat b/make.bat index f03d206..1f639a9 100644 --- a/make.bat +++ b/make.bat @@ -24,7 +24,7 @@ if "%DISTDIR%" == "" ( REM Sets the .egg file path. REM The file will be located at the project's root. if "%EGGDIR%" == "" ( - set EGGDIR=CWR_API.egg-info + set EGGDIR=dice-notation.egg-info ) REM Sets the tox folder path. @@ -166,4 +166,4 @@ if "%1" == "test" ( tox ) -:end +:end \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index a332e05..af93091 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,8 +3,8 @@ pyparsing==2.0.3 pyyaml==3.11 # Deployment -setuptools>=17.0 -twine>=1.5.0 +setuptools==26.1.1 +twine==1.8.1 # Documentation sphinx_bootstrap_theme>=0.4.6 \ No newline at end of file diff --git a/setup.py b/setup.py index 9446756..de20d20 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,6 @@ # Regular expression for the version _version_re = re.compile(r'__version__\s+=\s+(.*)') - # Test requirements _tests_require = ['tox'] @@ -34,7 +33,8 @@ def read(*names, **kwargs): ).read() # Gets the version for the source folder __init__.py file -with open('cwr/__init__.py', 'rb', encoding='utf-8') as f: +with open('dice_notation/__init__.py', 'rb', + encoding='utf-8') as f: version_lib = f.read() version_lib = _version_re.search(version_lib).group(1) version_lib = str(ast.literal_eval(version_lib.rstrip())) diff --git a/tox.ini b/tox.ini index 723e960..393952f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,13 +1,15 @@ [tox] envlist = - {py26,py27,pypy}, - {py33,py34,pypy3}, - {docs}, - {coverage} + py{27,34,35,36}, + pypy{,3}, + check, + docs, + coverage skip_missing_interpreters = true [testenv] +# Default environment deps = -r{toxinidir}/requirements.txt nose @@ -15,6 +17,7 @@ commands = nosetests [testenv:coverage] +# Generates coverage report passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH deps = -r{toxinidir}/requirements.txt @@ -26,13 +29,13 @@ commands = coveralls [testenv:check] +# Checks code rules deps = -r{toxinidir}/requirements.txt docutils check-manifest flake8 readme - pygments commands = python setup.py check --strict --metadata --restructuredtext check-manifest {toxinidir} @@ -40,7 +43,8 @@ commands = flake8 data_cwr flake8 config_cwr -[testenv:docs] +testenv:docs] +# Validates the project docs changedir = docs/source deps = @@ -48,4 +52,4 @@ deps = sphinx commands = sphinx-build -b linkcheck ./ {envtmpdir}/html - sphinx-build -W -b html -d {envtmpdir}/doctrees ./ {envtmpdir}/html \ No newline at end of file + sphinx-build -nW -b html -d {envtmpdir}/doctrees ./ {envtmpdir}/html \ No newline at end of file From f640e15fdd3d0aa9e65d3bff8ababd0014af24aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:36:47 +0200 Subject: [PATCH 14/22] Updated CI configuration --- .travis.yml | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7d49d8b..c1b5897 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,45 +4,41 @@ # Using Python for the project language: python python: - # Disabled for now - #- "2.6" - # Python 2.7 is set to test and deploy the docs, and to run the coverage report, in the configuration matrix - #- "2.7" - # Python 3.2 is no longer supported by pip - #- "3.2" - - "3.3" - # Python 3.4 is set to test the docs in the configuration matrix - #- "3.4" + - "2.7" + - "3.4" - "3.5" - - "pypy" - - "pypy3" + # Python 3.6 is set to test and deploy the docs in the configuration matrix + #- "3.6" + # PyPy currently is not working with the required dependencies + #- "pypy" + #- "pypy3" +env: + - TEST_DOCS=true matrix: include: # Tests and deploys docs, also runs coverage report - - python: "2.7" - env: COVERAGE=true TEST_DOCS=true DEPLOY_DOCS=true - # Tests docs - - python: "3.4" - env: TEST_DOCS=true + - python: "3.6" + env: TEST_DOCS=true DEPLOY_DOCS=true before_install: # Gets scripts - - git clone -b v0.2.0 --single-branch https://github.com/Bernardo-MG/ci-shell-scripts.git ~/.scripts + - git clone -b v0.4.1 --single-branch https://github.com/Bernardo-MG/ci-shell-scripts.git ~/.scripts # Sets scripts as executable - chmod -R +x ~/.scripts/* # Prepares CI environment - source ~/.scripts/travis/load-travis-environment.sh - - source ~/.scripts/travis/load-travis-environment-python.sh install: # tox is required for the tests - pip install tox + # sphinx is required for the docs + - pip install sphinx + # Dependencies + - pip install --upgrade -r requirements.txt script: # Tests are run - ~/.scripts/python/run_tests.sh true $PYTHON_VERSION_TEST # Documentation tests are run - ~/.scripts/python/run_tests.sh $DO_TEST_DOCS docs - # Documentation tests are run - - ~/.scripts/python/run_tests.sh $DO_COVERAGE coverage after_success: # Documentation deployment - - ~/.scripts/rtd/deploy.sh $DO_DEPLOY_DOCS {{cookiecutter.package_name}} \ No newline at end of file + - ~/.scripts/rtd/deploy.sh $DO_DEPLOY_DOCS cwr \ No newline at end of file From b7f83be99e59b375caff3a3094986041fc40c2d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:44:18 +0200 Subject: [PATCH 15/22] Reduced install requires --- setup.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/setup.py b/setup.py index de20d20..6c06f36 100644 --- a/setup.py +++ b/setup.py @@ -89,8 +89,6 @@ def run_tests(self): ], long_description=read('README.rst'), install_requires=[ - 'pyparsing', - 'pyyaml', 'setuptools', 'twine', ], From 2b054b18eba1572fa0b7134764f23f6e458a0800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:44:41 +0200 Subject: [PATCH 16/22] Raised pyparsing version --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index af93091..ca475ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # Parsing -pyparsing==2.0.3 +pyparsing==2.2.0 pyyaml==3.11 # Deployment From 13d0d33703e6a262e1356c058e25f37d6142fc81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:50:06 +0200 Subject: [PATCH 17/22] Fixed typo in tox file --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 393952f..0c1f050 100644 --- a/tox.ini +++ b/tox.ini @@ -43,7 +43,7 @@ commands = flake8 data_cwr flake8 config_cwr -testenv:docs] +[testenv:docs] # Validates the project docs changedir = docs/source From 8454a6f23e91159841eb098d90b0559bc743f1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 15:53:29 +0200 Subject: [PATCH 18/22] Fixed path for the file containing the version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6c06f36..304475b 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ def read(*names, **kwargs): ).read() # Gets the version for the source folder __init__.py file -with open('dice_notation/__init__.py', 'rb', +with open('cwr/__init__.py', 'rb', encoding='utf-8') as f: version_lib = f.read() version_lib = _version_re.search(version_lib).group(1) From 0998de8b690f1eca610769d93853c0c50c56bb77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 16:03:39 +0200 Subject: [PATCH 19/22] Corrections to manifest --- MANIFEST.in | 3 +++ tests/acknowledge/__init__.py | 1 + 2 files changed, 4 insertions(+) create mode 100644 tests/acknowledge/__init__.py diff --git a/MANIFEST.in b/MANIFEST.in index c0a4d24..6f8f5a8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -11,6 +11,9 @@ include .coveragerc recursive-exclude tests *.pyc recursive-exclude tests *.pyo +recursive-include tests *.V21 +recursive-include tests *.cwr + # Data files include data_cwr/*.py include data_cwr/*.csv diff --git a/tests/acknowledge/__init__.py b/tests/acknowledge/__init__.py new file mode 100644 index 0000000..d72da04 --- /dev/null +++ b/tests/acknowledge/__init__.py @@ -0,0 +1 @@ +__author__ = 'yaroslav' From 16ca3e138b35ca06e9272f9f00219e68ba185e1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sat, 20 May 2017 16:13:36 +0200 Subject: [PATCH 20/22] Disabled coding style validation --- tox.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 0c1f050..b861914 100644 --- a/tox.ini +++ b/tox.ini @@ -39,9 +39,9 @@ deps = commands = python setup.py check --strict --metadata --restructuredtext check-manifest {toxinidir} - flake8 cwr - flake8 data_cwr - flake8 config_cwr + #flake8 cwr + #flake8 data_cwr + #flake8 config_cwr [testenv:docs] # Validates the project docs From f7d61c2c2f8d825babf1c25a0a50406d2308ddde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 21 May 2017 12:29:01 +0200 Subject: [PATCH 21/22] Removed Python 2 support --- .travis.yml | 1 - README.rst | 6 +----- setup.py | 6 +----- tox.ini | 2 +- 4 files changed, 3 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index c1b5897..033f261 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ # Using Python for the project language: python python: - - "2.7" - "3.4" - "3.5" # Python 3.6 is set to test and deploy the docs in the configuration matrix diff --git a/README.rst b/README.rst index a769fc2..f27eec5 100644 --- a/README.rst +++ b/README.rst @@ -51,13 +51,9 @@ Prerequisites The project has been tested in the following versions of the interpreter: -- Python 2.6 -- Python 2.7 -- Python 3.3 - Python 3.4 - Python 3.5 -- Pypy -- Pypy 3 +- Python 3.6 All other dependencies are indicated on the requirements.txt file. The included makefile can install them with the command: diff --git a/setup.py b/setup.py index 304475b..58302d0 100644 --- a/setup.py +++ b/setup.py @@ -77,14 +77,10 @@ def run_tests(self): 'Intended Audience :: Developers', 'Operating System :: OS Independent', 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: Implementation :: PyPy', + 'Programming Language :: Python :: 3.5', 'Topic :: Software Development :: Libraries :: Python Modules' ], long_description=read('README.rst'), diff --git a/tox.ini b/tox.ini index b861914..f1319dd 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{27,34,35,36}, + py{34,35,36}, pypy{,3}, check, docs, From 16fc94b0f04d18cdfd44e2df51da95e2f0e228f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernardo=20Mart=C3=ADnez=20Garrido?= Date: Sun, 21 May 2017 12:33:04 +0200 Subject: [PATCH 22/22] Raised version --- cwr/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cwr/__init__.py b/cwr/__init__.py index 7f3e9a9..174007a 100644 --- a/cwr/__init__.py +++ b/cwr/__init__.py @@ -7,5 +7,5 @@ :license: MIT, see LICENSE for more details. """ -__version__ = '0.0.7' +__version__ = '0.0.8' __license__ = 'MIT'