You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					331 lines
				
				9.9 KiB
			
		
		
			
		
	
	
					331 lines
				
				9.9 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								# Python settings for QMK
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[yapf]
							 | 
						||
| 
								 | 
							
								# Align closing bracket with visual indentation.
							 | 
						||
| 
								 | 
							
								align_closing_bracket_with_visual_indent=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Allow dictionary keys to exist on multiple lines. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   x = {
							 | 
						||
| 
								 | 
							
								#       ('this is the first element of a tuple',
							 | 
						||
| 
								 | 
							
								#        'this is the second element of a tuple'):
							 | 
						||
| 
								 | 
							
								#            value,
							 | 
						||
| 
								 | 
							
								#   }
							 | 
						||
| 
								 | 
							
								allow_multiline_dictionary_keys=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Allow lambdas to be formatted on more than one line.
							 | 
						||
| 
								 | 
							
								allow_multiline_lambdas=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Allow splitting before a default / named assignment in an argument list.
							 | 
						||
| 
								 | 
							
								allow_split_before_default_or_named_assigns=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Allow splits before the dictionary value.
							 | 
						||
| 
								 | 
							
								allow_split_before_dict_value=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#   Let spacing indicate operator precedence. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#     a = 1 * 2 + 3 / 4
							 | 
						||
| 
								 | 
							
								#     b = 1 / 2 - 3 * 4
							 | 
						||
| 
								 | 
							
								#     c = (1 + 2) * (3 - 4)
							 | 
						||
| 
								 | 
							
								#     d = (1 - 2) / (3 + 4)
							 | 
						||
| 
								 | 
							
								#     e = 1 * 2 - 3
							 | 
						||
| 
								 | 
							
								#     f = 1 + 2 + 3 + 4
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# will be formatted as follows to indicate precedence:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#     a = 1*2 + 3/4
							 | 
						||
| 
								 | 
							
								#     b = 1/2 - 3*4
							 | 
						||
| 
								 | 
							
								#     c = (1+2) * (3-4)
							 | 
						||
| 
								 | 
							
								#     d = (1-2) / (3+4)
							 | 
						||
| 
								 | 
							
								#     e = 1*2 - 3
							 | 
						||
| 
								 | 
							
								#     f = 1 + 2 + 3 + 4
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								arithmetic_precedence_indication=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Number of blank lines surrounding top-level function and class
							 | 
						||
| 
								 | 
							
								# definitions.
							 | 
						||
| 
								 | 
							
								blank_lines_around_top_level_definition=2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Insert a blank line before a class-level docstring.
							 | 
						||
| 
								 | 
							
								blank_line_before_class_docstring=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Insert a blank line before a module docstring.
							 | 
						||
| 
								 | 
							
								blank_line_before_module_docstring=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Insert a blank line before a 'def' or 'class' immediately nested
							 | 
						||
| 
								 | 
							
								# within another 'def' or 'class'. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   class Foo:
							 | 
						||
| 
								 | 
							
								#                      # <------ this blank line
							 | 
						||
| 
								 | 
							
								#     def method():
							 | 
						||
| 
								 | 
							
								#       ...
							 | 
						||
| 
								 | 
							
								blank_line_before_nested_class_or_def=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Do not split consecutive brackets. Only relevant when
							 | 
						||
| 
								 | 
							
								# dedent_closing_brackets is set. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#    call_func_that_takes_a_dict(
							 | 
						||
| 
								 | 
							
								#        {
							 | 
						||
| 
								 | 
							
								#            'key1': 'value1',
							 | 
						||
| 
								 | 
							
								#            'key2': 'value2',
							 | 
						||
| 
								 | 
							
								#        }
							 | 
						||
| 
								 | 
							
								#    )
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# would reformat to:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#    call_func_that_takes_a_dict({
							 | 
						||
| 
								 | 
							
								#        'key1': 'value1',
							 | 
						||
| 
								 | 
							
								#        'key2': 'value2',
							 | 
						||
| 
								 | 
							
								#    })
							 | 
						||
| 
								 | 
							
								coalesce_brackets=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The column limit.
							 | 
						||
| 
								 | 
							
								column_limit=256
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The style for continuation alignment. Possible values are:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# - SPACE: Use spaces for continuation alignment. This is default behavior.
							 | 
						||
| 
								 | 
							
								# - FIXED: Use fixed number (CONTINUATION_INDENT_WIDTH) of columns
							 | 
						||
| 
								 | 
							
								#   (ie: CONTINUATION_INDENT_WIDTH/INDENT_WIDTH tabs) for continuation
							 | 
						||
| 
								 | 
							
								#   alignment.
							 | 
						||
| 
								 | 
							
								# - VALIGN-RIGHT: Vertically align continuation lines with indent
							 | 
						||
| 
								 | 
							
								#   characters. Slightly right (one more indent character) if cannot
							 | 
						||
| 
								 | 
							
								#   vertically align continuation lines with indent characters.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# For options FIXED, and VALIGN-RIGHT are only available when USE_TABS is
							 | 
						||
| 
								 | 
							
								# enabled.
							 | 
						||
| 
								 | 
							
								continuation_align_style=SPACE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Indent width used for line continuations.
							 | 
						||
| 
								 | 
							
								continuation_indent_width=4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Put closing brackets on a separate line, dedented, if the bracketed
							 | 
						||
| 
								 | 
							
								# expression can't fit in a single line. Applies to all kinds of brackets,
							 | 
						||
| 
								 | 
							
								# including function definitions and calls. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   config = {
							 | 
						||
| 
								 | 
							
								#       'key1': 'value1',
							 | 
						||
| 
								 | 
							
								#       'key2': 'value2',
							 | 
						||
| 
								 | 
							
								#   }        # <--- this bracket is dedented and on a separate line
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   time_series = self.remote_client.query_entity_counters(
							 | 
						||
| 
								 | 
							
								#       entity='dev3246.region1',
							 | 
						||
| 
								 | 
							
								#       key='dns.query_latency_tcp',
							 | 
						||
| 
								 | 
							
								#       transform=Transformation.AVERAGE(window=timedelta(seconds=60)),
							 | 
						||
| 
								 | 
							
								#       start_ts=now()-timedelta(days=3),
							 | 
						||
| 
								 | 
							
								#       end_ts=now(),
							 | 
						||
| 
								 | 
							
								#   )        # <--- this bracket is dedented and on a separate line
							 | 
						||
| 
								 | 
							
								dedent_closing_brackets=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Disable the heuristic which places each list element on a separate line
							 | 
						||
| 
								 | 
							
								# if the list is comma-terminated.
							 | 
						||
| 
								 | 
							
								disable_ending_comma_heuristic=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Place each dictionary entry onto its own line.
							 | 
						||
| 
								 | 
							
								each_dict_entry_on_separate_line=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The regex for an i18n comment. The presence of this comment stops
							 | 
						||
| 
								 | 
							
								# reformatting of that line, because the comments are required to be
							 | 
						||
| 
								 | 
							
								# next to the string they translate.
							 | 
						||
| 
								 | 
							
								i18n_comment=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The i18n function call names. The presence of this function stops
							 | 
						||
| 
								 | 
							
								# reformattting on that line, because the string it has cannot be moved
							 | 
						||
| 
								 | 
							
								# away from the i18n comment.
							 | 
						||
| 
								 | 
							
								i18n_function_call=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Indent blank lines.
							 | 
						||
| 
								 | 
							
								indent_blank_lines=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Indent the dictionary value if it cannot fit on the same line as the
							 | 
						||
| 
								 | 
							
								# dictionary key. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   config = {
							 | 
						||
| 
								 | 
							
								#       'key1':
							 | 
						||
| 
								 | 
							
								#           'value1',
							 | 
						||
| 
								 | 
							
								#       'key2': value1 +
							 | 
						||
| 
								 | 
							
								#               value2,
							 | 
						||
| 
								 | 
							
								#   }
							 | 
						||
| 
								 | 
							
								indent_dictionary_value=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The number of columns to use for indentation.
							 | 
						||
| 
								 | 
							
								indent_width=4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Join short lines into one line. E.g., single line 'if' statements.
							 | 
						||
| 
								 | 
							
								join_multiple_lines=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Do not include spaces around selected binary operators. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 2 * 3 - 4 / 5
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# will be formatted as follows when configured with "*,/":
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 2*3 - 4/5
							 | 
						||
| 
								 | 
							
								no_spaces_around_selected_binary_operators=
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Use spaces around default or named assigns.
							 | 
						||
| 
								 | 
							
								spaces_around_default_or_named_assign=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Use spaces around the power operator.
							 | 
						||
| 
								 | 
							
								spaces_around_power_operator=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The number of spaces required before a trailing comment.
							 | 
						||
| 
								 | 
							
								# This can be a single value (representing the number of spaces
							 | 
						||
| 
								 | 
							
								# before each trailing comment) or list of values (representing
							 | 
						||
| 
								 | 
							
								# alignment column values; trailing comments within a block will
							 | 
						||
| 
								 | 
							
								# be aligned to the first column value that is greater than the maximum
							 | 
						||
| 
								 | 
							
								# line length within the block). For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# With spaces_before_comment=5:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 1 # Adding values
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# will be formatted as:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 1     # Adding values <-- 5 spaces between the end of the statement and comment
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# With spaces_before_comment=15, 20:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 1 # Adding values
							 | 
						||
| 
								 | 
							
								#   two + two # More adding
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   longer_statement # This is a longer statement
							 | 
						||
| 
								 | 
							
								#   short # This is a shorter statement
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   a_very_long_statement_that_extends_beyond_the_final_column # Comment
							 | 
						||
| 
								 | 
							
								#   short # This is a shorter statement
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# will be formatted as:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   1 + 1          # Adding values <-- end of line comments in block aligned to col 15
							 | 
						||
| 
								 | 
							
								#   two + two      # More adding
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   longer_statement    # This is a longer statement <-- end of line comments in block aligned to col 20
							 | 
						||
| 
								 | 
							
								#   short               # This is a shorter statement
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   a_very_long_statement_that_extends_beyond_the_final_column  # Comment <-- the end of line comments are aligned based on the line length
							 | 
						||
| 
								 | 
							
								#   short                                                       # This is a shorter statement
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								spaces_before_comment=2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Insert a space between the ending comma and closing bracket of a list,
							 | 
						||
| 
								 | 
							
								# etc.
							 | 
						||
| 
								 | 
							
								space_between_ending_comma_and_closing_bracket=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split before arguments
							 | 
						||
| 
								 | 
							
								split_all_comma_separated_values=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split before arguments if the argument list is terminated by a
							 | 
						||
| 
								 | 
							
								# comma.
							 | 
						||
| 
								 | 
							
								split_arguments_when_comma_terminated=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Set to True to prefer splitting before '+', '-', '*', '/', '//', or '@'
							 | 
						||
| 
								 | 
							
								# rather than after.
							 | 
						||
| 
								 | 
							
								split_before_arithmetic_operator=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Set to True to prefer splitting before '&', '|' or '^' rather than
							 | 
						||
| 
								 | 
							
								# after.
							 | 
						||
| 
								 | 
							
								split_before_bitwise_operator=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split before the closing bracket if a list or dict literal doesn't fit on
							 | 
						||
| 
								 | 
							
								# a single line.
							 | 
						||
| 
								 | 
							
								split_before_closing_bracket=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split before a dictionary or set generator (comp_for). For example, note
							 | 
						||
| 
								 | 
							
								# the split before the 'for':
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   foo = {
							 | 
						||
| 
								 | 
							
								#       variable: 'Hello world, have a nice day!'
							 | 
						||
| 
								 | 
							
								#       for variable in bar if variable != 42
							 | 
						||
| 
								 | 
							
								#   }
							 | 
						||
| 
								 | 
							
								split_before_dict_set_generator=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split before the '.' if we need to split a longer expression:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   foo = ('This is a really long string: {}, {}, {}, {}'.format(a, b, c, d))
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# would reformat to something like:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   foo = ('This is a really long string: {}, {}, {}, {}'
							 | 
						||
| 
								 | 
							
								#          .format(a, b, c, d))
							 | 
						||
| 
								 | 
							
								split_before_dot=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split after the opening paren which surrounds an expression if it doesn't
							 | 
						||
| 
								 | 
							
								# fit on a single line.
							 | 
						||
| 
								 | 
							
								split_before_expression_after_opening_paren=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# If an argument / parameter list is going to be split, then split before
							 | 
						||
| 
								 | 
							
								# the first argument.
							 | 
						||
| 
								 | 
							
								split_before_first_argument=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Set to True to prefer splitting before 'and' or 'or' rather than
							 | 
						||
| 
								 | 
							
								# after.
							 | 
						||
| 
								 | 
							
								split_before_logical_operator=False
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Split named assignments onto individual lines.
							 | 
						||
| 
								 | 
							
								split_before_named_assigns=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Set to True to split list comprehensions and generators that have
							 | 
						||
| 
								 | 
							
								# non-trivial expressions and multiple clauses before each of these
							 | 
						||
| 
								 | 
							
								# clauses. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   result = [
							 | 
						||
| 
								 | 
							
								#       a_long_var + 100 for a_long_var in xrange(1000)
							 | 
						||
| 
								 | 
							
								#       if a_long_var % 10]
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# would reformat to something like:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   result = [
							 | 
						||
| 
								 | 
							
								#       a_long_var + 100
							 | 
						||
| 
								 | 
							
								#       for a_long_var in xrange(1000)
							 | 
						||
| 
								 | 
							
								#       if a_long_var % 10]
							 | 
						||
| 
								 | 
							
								split_complex_comprehension=True
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty for splitting right after the opening bracket.
							 | 
						||
| 
								 | 
							
								split_penalty_after_opening_bracket=300
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty for splitting the line after a unary operator.
							 | 
						||
| 
								 | 
							
								split_penalty_after_unary_operator=10000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty of splitting the line around the '+', '-', '*', '/', '//',
							 | 
						||
| 
								 | 
							
								# ``%``, and '@' operators.
							 | 
						||
| 
								 | 
							
								split_penalty_arithmetic_operator=300
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty for splitting right before an if expression.
							 | 
						||
| 
								 | 
							
								split_penalty_before_if_expr=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty of splitting the line around the '&', '|', and '^'
							 | 
						||
| 
								 | 
							
								# operators.
							 | 
						||
| 
								 | 
							
								split_penalty_bitwise_operator=300
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty for splitting a list comprehension or generator
							 | 
						||
| 
								 | 
							
								# expression.
							 | 
						||
| 
								 | 
							
								split_penalty_comprehension=80
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty for characters over the column limit.
							 | 
						||
| 
								 | 
							
								split_penalty_excess_character=7000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty incurred by adding a line split to the unwrapped line. The
							 | 
						||
| 
								 | 
							
								# more line splits added the higher the penalty.
							 | 
						||
| 
								 | 
							
								split_penalty_for_added_line_split=30
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty of splitting a list of "import as" names. For example:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   from a_very_long_or_indented_module_name_yada_yad import (long_argument_1,
							 | 
						||
| 
								 | 
							
								#                                                             long_argument_2,
							 | 
						||
| 
								 | 
							
								#                                                             long_argument_3)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# would reformat to something like:
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								#   from a_very_long_or_indented_module_name_yada_yad import (
							 | 
						||
| 
								 | 
							
								#       long_argument_1, long_argument_2, long_argument_3)
							 | 
						||
| 
								 | 
							
								split_penalty_import_names=0
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# The penalty of splitting the line around the 'and' and 'or'
							 | 
						||
| 
								 | 
							
								# operators.
							 | 
						||
| 
								 | 
							
								split_penalty_logical_operator=300
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Use the Tab character for indentation.
							 | 
						||
| 
								 | 
							
								use_tabs=False
							 | 
						||
| 
								 | 
							
								
							 |