CertifiedDeveloper_PrepGuide_v4

17
1 CERTIFIED MULESOFT DEVELOPER EXAM Preparation Guide

description

CertifiedDeveloper_PrepGuide_v4

Transcript of CertifiedDeveloper_PrepGuide_v4

Page 1: CertifiedDeveloper_PrepGuide_v4

1  

 

   

 

 

 

 

 

 

 

CERTIFIED  MULESOFT  DEVELOPER  EXAM  

Preparation  Guide    

   

Page 2: CertifiedDeveloper_PrepGuide_v4

2  

 

   

Page 3: CertifiedDeveloper_PrepGuide_v4

3  

 

TABLE  OF  CONTENTS  Table  of  Contents  .........................................................................................................................................................  3  

Preparation  Guide  Overview  ........................................................................................................................................  5  

Guide  Purpose  ..........................................................................................................................................................  5  

General  Preparation  Recommendations  ..................................................................................................................  5  

Required  Experience  .................................................................................................................................................  5  

Exam  Overview  .............................................................................................................................................................  5  

To  Register  for  the  Exam  ..........................................................................................................................................  6  

Exam  Objective  .........................................................................................................................................................  6  

Intended  Audiences  ..................................................................................................................................................  6  

Pass/Fail  Requirement  ..............................................................................................................................................  6  

Cost  ...........................................................................................................................................................................  7  

Exam  Format  ............................................................................................................................................................  7  

Certification  Validity  .................................................................................................................................................  7  

Exam  Module  Details  ....................................................................................................................................................  8  

Basics  ....................................................................................................................................................................  8  

Batch  .....................................................................................................................................................................  8  

Cache  Scope  ..........................................................................................................................................................  8  

Clusters  .................................................................................................................................................................  8  

Common  Error  Scenarios  ......................................................................................................................................  9  

Data  Mapper  .........................................................................................................................................................  9  

Deployment  and  Mule  Management  Console  (MMC)  .........................................................................................  9  

Enricher  ................................................................................................................................................................  9  

Exceptions  ..........................................................................................................................................................  10  

Page 4: CertifiedDeveloper_PrepGuide_v4

4  

 

Expression  Routing  .............................................................................................................................................  10  

Expressions  .........................................................................................................................................................  10  

Flows  and  Testing  ...............................................................................................................................................  10  

General  Knowledge  Questions  ...........................................................................................................................  11  

HTTP  ...................................................................................................................................................................  11  

Java  Custom  Components  ..................................................................................................................................  11  

JDBC  ....................................................................................................................................................................  11  

JMS  .....................................................................................................................................................................  12  

Mule's  Place  in  the  Enterprise  ............................................................................................................................  12  

Properties  ...........................................................................................................................................................  12  

REST  ....................................................................................................................................................................  12  

Routing  ...............................................................................................................................................................  13  

SOAP  Web  Services  .............................................................................................................................................  13  

Transactions  .......................................................................................................................................................  13  

VM  Transport  ......................................................................................................................................................  13  

Sample  Exam  Questions  .............................................................................................................................................  14  

Solutions  to  Sample  Questions  ...................................................................................................................................  17  

 

   

Page 5: CertifiedDeveloper_PrepGuide_v4

5  

 

PREPARATION  GUIDE  OVERVIEW  

GUIDE  PURPOSE  

The  purpose  of  this  guide  is  to  help  those  looking  to  become  a  Certified  MuleSoft  Developer  understand  what  knowledge  and  skills  are  recommended  to  pass  the  exam.  This  guide  does  not  provide  that  knowledge.  It  simply  details  what  knowledge  is  required  and  how  to  obtain  that  knowledge.      

Further  details  can  be  found  on  our  certification  website  at  http://training.mulesoft.com/certification  and  our  certification  frequently  asked  questions  page  at  http://training.mulesoft.com/certification/faq.  

GENERAL  PREPARATION  RECOMMENDATIONS  

It  is  suggested,  but  not  mandatory,  that  an  individual  first  achieve  Associate  MuleSoft  Developer  accreditation  prior  to  attempting  Certified  MuleSoft  Developer  exam.  Relevant  additional  details  can  be  found  at:  http://training.mulesoft.com/certification.  

To  prepare  for  taking  the  Certified  MuleSoft  Developer  exam,  a  participant  should  be  able  to  fully  comprehend  the  concepts  described  under  the  Exam  Module  Details  section  below  and  apply  the  concepts  in  order  to  answer  exam  questions  on  topics  related  to  each  module.  

 For  the  latest  MuleSoft  product  documentation,  please  visit:  http://www.mulesoft.org/documentation.  

You  may  also  find  that  some  of  our  courses  are  helpful  in  preparing  for  the  Certified  MuleSoft  Developer  exam,  such  as  our  Anypoint  Platform  Essentials  and  Advanced  Anypoint  Platform  Development  courses,  but  really  no  course  could  provide  the  real  project  experience  needed  to  pass  this  challenging  exam.  

REQUIRED  EXPERIENCE  

This  test  is  designed  to  verify  product  expertise  gained  through  significant  experience  using  MuleSoft  products  on  a  variety  of  projects.  There  is  no  specific  amount  of  experience  required,  but  history  shows  that  people  who  pass  this  challenging  exam  have  months  or  years  of  real  MuleSoft  project  experience.  

The  exam  aims  to  ensure  that  each  individual  has:  strong  applicable  software  development  background;  broad  and  deep  knowledge  of  MuleSoft  solutions  and  tools;  and  appreciable  experience  using  MuleSoft  solutions  on  multiple  types  of  real  or  experimental  projects.  

FOR  FURTHER  INFORMATION  

For  questions  related  to  MuleSoft  CERTIFICATION  that  are  not  addressed  in  this  document,  please  see:  

• Our  certification  frequently  asked  questions  site  at  http://training.mulesoft.com/certification/faq.  

Page 6: CertifiedDeveloper_PrepGuide_v4

6  

 

• Contact  the  MuleSoft  Certification  team  at  [email protected].  

For  questions  related  to  MuleSoft  TRAINING  that  are  not  addressed  in  this  document,  please  see:  

• Our  Training  website  at  http://training.mulesoft.com.  • Our  training  frequently  asked  questions  site  at  http://training.mulesoft.com/faq.  • Contact  the  MuleSoft  Training  team  at  [email protected].  

   

EXAM  OVERVIEW  

TO  REGISTER  FOR  THE  EXAM  

To  view  delivery  options  and  testing  center  locations,  and  to  purchase  and  schedule  exams,  please  visit  the  Webassessor  site  at:  http://www.webassessor.com/home.do?page=PUBLIC&branding=MULESOFT.  

EXAM  OBJECTIVE  

The  Certified  MuleSoft  Developer  exam  is  designed  to  assess  true  expertise  as  a  MuleSoft  integration  developer.  The  exam  verifies:  strong  applicable  software  development  skills;  broad  and  deep  MuleSoft  solution  knowledge;  and  appreciable  experience  using  MuleSoft  solutions  on  multiple  types  of  projects.  

INTENDED  AUDIENCES  

• Developers  (various  programming  languages)  • Solution  Consultants  • System  Integrators  • Technical  Architects  

• Business  Architects  • (Some)  Project  Managers  • (Some)  Program  Managers  

The  Certified  MuleSoft  Developer  exam  is  a  highly  technical  exam  and,  regardless  of  role,  the  individual  will  need  to  meet  the  profile  described  under  the    

Exam  Objective  above.  

PASS/FAIL  REQUIREMENT  

A  score  of  80%  or  higher  is  a  required  to  pass  the  Certified  MuleSoft  Developer  exam.    

Page 7: CertifiedDeveloper_PrepGuide_v4

7  

 

COST  

The  fee  is  $250  USD  per  person  per  attempt  to  take  the  Certified  MuleSoft  Developer  exam.  Please  note  that  this  exam  may  in  some  cases  be  purchased  in  a  bundle  or  package  with  other  training  and/or  certification  exams  (see  http://training.mulesoft.com/catalog).  

EXAM  FORMAT  

Number  of  Questions/Format:  100  multiple-­‐choice  questions  Duration:  Up  to  2  hours  Language:  English  Resources  Allowed:  None.  This  is  a  ‘Closed  Book’  exam.  Proctoring:  Required.  A  testing  proctor  will  supervise  you  taking  the  exam.  

TESTING  LOCATION  

This  examination  is  available  anywhere  worldwide.  You  have  two  delivery  options:    

• In  any  testing  center  location  within  Kryterion’s  network  worldwide;  • Online  from  any  Internet-­‐connected  PC  worldwide  with  qualifying  webcam  and  utilizing  

Kryterion  Webassessor’s  Online  Proctoring  service.  

CERTIFICATION  VALIDITY  

The  Certified  MuleSoft  Developer  accreditation  has  an  expiration  of  two  (2)  years  from  the  date  of  passing.  

 

   

Page 8: CertifiedDeveloper_PrepGuide_v4

8  

 

EXAM  MODULE  DETAILS  The  following  sections  provide  key  concepts  and  detailed  information  on  the  modules  covered  in  the  Certified  MuleSoft  Developer  exam.    To  prepare  for  taking  the  exam,  a  participant  should  be  able  to  fully  comprehend  the  concepts  described  under  each  module  below  and  apply  the  concepts  in  order  to  answer  exam  questions  on  topics  related  to  each  module.  

For  the  latest  MuleSoft  product  documentation,  please  visit:  http://www.mulesoft.org/documentation/  

Basics    

This  Basics  module  provides  focuses  on  providing  the  understanding  of  the  Mule  Flow  concept  with  Mule  messages,  major  components,  and  basic  configuration  of  HTTP,  Java  Component,  etc.    Key  Concepts:  

• Steps  to  creating  a  Project  in  Mule  • How  a  Flow  applies  to  a  Mule  Message  Source  and  a  Message  Processor  • Major  components  of  a  Mule  Message  • Procedural  coding  approach  with  Mule  development  • Basic  Mule  configuration  of  transport  protocols,  endpoints,  and  POJO  manipulation  

Batch  

The  batch  module  reviews  the  new  batching  feature  implemented  in  3.5/May  2014.    Key  Concepts:  

• The  various  phases  of  batch  processing  • Configuring  batch  processing    

Cache  Scope  

The  Cache  Scope  module  reviews  how  the  Cache  Scope  strategy  supports  time  saving  and  processing  load  by  storing  and  reusing  frequently  called  data.    Key  Concepts:  

• How  to  add  and  configure  a  Cache  Scope  • Creating  a  new  Caching  Strategy  and  best  practices  for  managing  through  application  code  

Clusters  

The  Clusters  module  provides  an  overview  of  the  how  to  manage  server  clusters  and  the  relations  with  Mule  Enterprise  Service  Bus  (ESB)  implementation.    

Page 9: CertifiedDeveloper_PrepGuide_v4

9  

 

Key  Concepts:  • Understanding  general  concepts  and  benefits  for  building  Mule  Clusters  • How  Mule  Clusters  use  queues  to  distribute  application  flows  for  processing  • A  review  of  how  clustering  supports  various  Mule  transport  mechanisms  

Common  Error  Scenarios  

The  Common  Error  Scenarios  module  details  common  error  situations  during  MuleSoft  development  and  related  exception  strategies  used  for  dealing  with  issues.  

Key  Concepts:  • Global  application  configuration  for  handing  exceptions  • Anypoint  Studio  error  scenario  navigation  • Working  with  debugging  Flows  and  expression  handlers  

DataMapper  

The  DataMapper  module  reviews  how  mapping  flows  can  define  overall  data  transformation  and  integration  process  from  a  given  input  to  a  given  output.    Key  Concepts:  

• How  to  use  the  Anypoint  DataMapper  component  and  common  implementation  scenarios  • Working  with  the  JSON  data  type  and  how  it  applies  to  a  DataMapper  • Using  the  Object  to  String  transformer  • Data  model  code  translation  and  usage  with  a  Mule  message  

Deployment  and  Management  Consoles    

The  Deployment  and  Management  Consoles  module  provides  an  overview  of  configuring  an  application  environment,  managing  user  community,  and  deployment  procedures  using  MMC.    Key  Concepts:  

• Using  the  general  step-­‐by-­‐step  process  for  deploying  an  application  to  a  server  using  the  Mule  Enterprise  Management  and  CloudHub  consoles    

• Configuring  Mule  ESB  and  CloudHub  for  application  deployment  • Organizing  spring  properties  and  spring  property  file  configuration  • How  to  use  Flow  Analyzer  to  review  aspects  of  Flows  in  a  application  and  why  this  is  critical  

during  configuration  and  application  deployment  

Enricher  

The  Enricher  module  covers  how  Enrichers  can  be  used  to  enhance  a  Mule  message.    

Page 10: CertifiedDeveloper_PrepGuide_v4

10  

 

Key  Concepts:  • How  the  Message  Enricher  processes  data  and  relevant  use  cases  • Understanding  complex  enrichment  

Exceptions  

The  Exceptions  module  evaluates  the  available  Exception  strategies,  usage  of  the  Exception  strategies,  and  how  they  affect  Flows  and  Sub-­‐Flows.    Key  Concepts:  

• Using  Exception  Strategies  and  how  they  affect  Flows/SubFlows  • The  different  exception  strategies  that  are  available  • How  to  change  and  return  a  message  from  an  Exception  strategy  • Routers  that  are  for  potential  error  conditions  (First  Successful,  Until  Successful)  

Expression  Routing  

The  Expression  Routing  module  provides  a  review  of  routing  techniques  using  Expressions.    See  the  Expressions  description  and,  to  a  lesser  degree,  the  Routing  description.    Key  Concepts:  See  Expressions  and,  to  a  lesser  degree,  Routing.  

Expressions  

The  Expressions  module  provides  a  review  of  all  expressions  properties,  and  inbound/outbound  routing  ways  of  using  expressions.    Key  Concepts:  

• Inbound-­‐outbound  Expression  properties  • Using  Flow  variables  and  session  variables  for  expression  evaluation  • How  Maps  and  Lists  are  evaluated  and/or  manipulated  using  Expressions  • Setting  variable  and  property  elements  using  Expressions  • Setting  and  testing  Payload  attributes  through  Expressions  using  components  such  as  Expression  

Transformers,  Filters,  Choice  Router,  and  Loggers  

Flows  and  Testing  

The  Flows  and  Testing  module  conducts  focuses  on  how  to  develop  various  flow  types  and  how  to  unit  test  all  message  Flow  techniques.    Key  Concepts:  

• How  to  unit  test  various  endpoints  

Page 11: CertifiedDeveloper_PrepGuide_v4

11  

 

• Coding  and  testing  exchange  patterns  (e.g.,  request-­‐response  and  one-­‐way)  • Understanding  the  differences  between  inbound  and  outbound  endpoints  • Testing  using  JUnit  cases  with  MuleSoft  • Procedures  for  sending  a  Mule  message  from  test  class  to  a  MuleSoft  application  

General  Knowledge  Questions  

The  General  Knowledge  Questions  module  covers  basic  MuleSoft  implementation  and  design  concepts.    Key  Concepts:  

• Creating  Flows  and  how  to  use  message  processors  • Steps  when  debugging  Flows  and  common  error  scenarios  • Understanding  data  movement  through  an  application  and  is  encapsulated  with  Mule  Logic  

HTTP  

The  HTTP  module  focuses  on  the  concept  for  building  HTTP  connector  flows,  logging,  and  processing  in  Anypoint  Studio.    Key  Concepts:  

• Understanding  how  to  create  and  configure  an  HTTP  endpoint,  inbound  and  outbound  • What  the  differences  are  between  HTTP  and  HTTPS  • Building  independent  HTTP  flows  in  Anypoint  Studio  • Understanding  HTTP  content-­‐type  and  the  effect  on  browser  types  

Java  Custom  Components  

The  Java  Custom  Components  module  reviews  creating  and  testing  Java  custom  components  and  integrating  them  into  flows.    Key  Concepts:  

• Using  advanced  Java  concepts  to  invoke  service  calls  for  passing  Mule  messages  • Creating  Mule  transformers  using  custom-­‐made  Java  classes  • Configuring  Java  components  such  as  prototype  and  singleton  • Usage  of  the  default  entry  point  resolver  with  Java  components  

JDBC  

The  JDBC  module  focuses  on  JDBC  connectors  and  data  source  customization  for  endpoints  within  flows.    Key  Concepts:  

• Understanding  contents  of  JDBC  connectors  and  associated  data  sources    • How  JDBC  inbound  and  outbound  endpoints  differ  and  their  limitations  

Page 12: CertifiedDeveloper_PrepGuide_v4

12  

 

• JDBC  return  types  and  how  to  access  the  contents  of  the  returned  objects  using  Expressions  • Using  SQL  for  DataMappers  and  Expressions  

JMS  

The  JMS  module  provides  an  overview  of  building  JMS  connectors  including  attributes  such  as  creating  two-­‐way  communications,  temporary  queues,  and  serializing  objects  to  send  over  transports.    Key  Concepts:  

• Understanding  general  usage  and  configuration  concepts  of  using  JMS  • Using  back  channels  and  creating  two-­‐way  communication  through  JMS  connections  • How  JMS  queues  differ  from  Topics  • Understanding  how  JMS  uses  Correlation  IDs,  serializing,  and  deserializing  objects  

MuleSoft  Solutions’  Place  in  the  Enterprise  

This  module  outlines  how  systems,  data,  and  applications  can  be  integrated  within  an  enterprise  and  discusses  the  potential  business  impact.    Key  Concepts:  

• Understanding  integration  points  for  Mule  ESB  within  an  enterprise  • Benefits  of  using  Mule  ESB  

Properties  

This  module  reviews  Mule  properties,  properties  file  configuration,  and  other  configurable  parameters.    Key  Concepts:  

• Reviewing  how  to  develop  and  manage  application  properties    • Benefits  for  using  global  properties  

REST  

The  REST  module  provides  an  overview  of  REST  basics,  method  usage,  dynamic  endpoints,  and  absorbing  resources.    Key  Concepts:  

• Understanding  the  basics  of  implementing  a  REST  services  and  the  methods  used  such  as  GET,  POST,  PUT,  and  DELETE  

• Review  how  to  use  annotations  on  REST  methods  to  create  unique  signatures  • Usage  of  REST  blocks  and  how  to  absorb  resources  • Understanding  how  to  create  REST  clients  and  working  with  dynamic  endpoints  

Page 13: CertifiedDeveloper_PrepGuide_v4

13  

 

Routing  

The  Routing  module  reviews  the  different  types  of  Routers  and  how  Routers  are  used  to  control  how  messages  are  sent  and  received  by  components.    Key  Concepts:  

• Defining  and  basic  creation  and  control  of  Mule  Flows,  Sub-­‐Flows,  and  Flow-­‐Reference  • Understanding  Filters  and  how  to  other  basic  filters  are  used  with  Routing  • Usage  techniques  for  Splitters,  Aggregators,  Multi-­‐Cast  Routers,  and  For-­‐each  

SOAP  Web  Services  

The  SOAP  Web  Services  module  provides  an  overview  of  using  SOAP  web  service  concepts  for  publishing  and/or  consuming  a  Mule  message.    Key  Concepts:  

• Learning  and  applying  the  basics  of  a  SOAP  message  with  Mule  • Understanding  how  to  use  CXF  Interfaces  to  create  Service  definitions  • Extending  interfaces  to  create  CXF  implementations  • Sending  and  receiving  Mule  messages  over  HTTP  

Transactions  

The  Transactions  module  reviews  how  to  apply  the  concept  of  transaction  management  and  which  endpoints  support  this  transaction.    Key  Concepts:  

• Managing  and  configuring  resource  transactions  for  inbound  and  outbound  messages  • Understanding  the  various  transaction  types  and  usage  techniques  

VM  Transport  

The  VM  Transport  module  reviews  how  to  use  a  VM  Transport  for  controlling  how  messages  are  sent  and  received  by  components  in  the  system.    Key  Concepts:  

• How  to  use  VM  Transport  for  communication  between  Mule  flows  • Queue  usage  with  VM  Transport  and  configuration  structure  

   

Page 14: CertifiedDeveloper_PrepGuide_v4

14  

 

SAMPLE  EXAM  QUESTIONS  Solutions  to  these  questions  are  provided  in  the  next  section.  

Question  1.  Can  a  flow  have  more  than  one  message  source?    

 A. Yes,  using  the  composite  source  B. Yes,  if  declared  sequentially  at  the  beginning  of  the  flow  C. No,  Mule  validates  on  startup  that  the  next  element  after  a  message  source  is  a  message  

processor  D. It  depends  on  if  the  two  message  sources  have  compatible  transport  types.  

Question  2.  Which  of  the  following  transformations  is  not  possible  when  using  DataMapper?    A. Excel  Spread  Sheet  to  a  CSV  file  B. CSV  file  to  a  POJO  C. XML  file  to  Map  D. JSON  to  HTML  

Question  3.  Fill  in  the  Blank:  Mule  ESB  and  CloudHub  can  have  multiple  _______,  each  of  which  can  be  transmitting  concurrent  __________.    A. Applications,  Messages  B. Nodes,  Loads  C. Flows,  Endpoints  D. Endpoints,  Workers  

Question  4.  Where  can't  I  define  an  Exception  Strategy?    A. Sub-­‐flow    B. Flow    C. Private  flow    D. Global  configuration  

Question  5.  Expressions  can  be  used  in  MuleSoft  integration:    A. To  extract  information  from  the  current  message  B. With  routers  and  filters  for  defining  routing  logic  C. For  filtering  out  unwanted  messages  

Page 15: CertifiedDeveloper_PrepGuide_v4

15  

 

D. All  of  the  above  

Question  6.    In  order  to  Unit  test  a  MuleSoft  application  it's  necessary  to  extend  what  class?    A. org.mule.tck.junit4.FunctionalTestCase  B. org.mule.tck.functional.FunctionalTestComponent  C. org.mule.tck.exceptions.FunctionalTestException  D. org.junit.Test  

Question  7.  One  can  use  Mule  Expression  Language  in  which  of  the  following  contexts?    A. Application  B. Message  C. Server  D. All  

Question  8.    When  receiving  HTTP  responses,  the  payload  of  the  MuleMessage  will  always  be:    A. A  Hashmap  of  all  query  parameters  B. An  InputStream  C. Dependent  on  the  URL  and  how  it  comes  to  Mule  (webserver,  proxy,  etc.)  D. Either  JSON,  a  string  or  a  hashmap  depending  on  the  request  

Question  9.  If  the  component  implements  Callable  lifecycle  interface,  what  method  would  you  use  to  receive  the  message?    A. onCall()  B. initialize()  C. Start()  D. None  of  the  above  

Question  10.    What  are  the  databases  that  MuleSoft  integrations  can  connect  to?    A. Any  JDBC  compliant  database  B. Oracle,  MySQL,  Postgres,  Derby,  DB2,  MSSQL    C. Any  database    D. Oracle  and  Postgres  

Page 16: CertifiedDeveloper_PrepGuide_v4

16  

 

Question  11.  What  is  the  purpose  of  setting  the  maxRedelivery  attribute  on  the  connector  URL?    A. To  deliver  each  message  in  the  queue  up  to  the  value  set  in  maxRedelivery,  without  

differentiating  between  messages  that  generated  errors  and  others  B. That  attribute  is  not  possible  to  set  on  a  JMS  connector  C. To  avoid  an  infinite  loop  trying  to  process  a  message  that  will  always  generate  an  error  D. To  define  the  maximum  number  of  receivers  for  the  message  

Question  12.    What's  the  correct  way  to  define  a  dynamic  inbound  endpoint?    A. Dynamic  endpoints  are  only  supported  for  outbounds  B. <http:inbound-­‐endpoint  host="0.0.0.0"  path="/#[expresion.for.path]"  port="port"  />  C. <http:inbound-­‐endpoint  address="http://host:port/#[expresion.for.path]"  />    D. <dynamic-­‐source  expression=""[expresion.for.path]">  

<http:inbound-­‐endpoint  rootAddress="http://host:port/"  />  </dynamic-­‐source>  

Question  13.    What  is  a  Scope?    A. It  is  a  construct  that  contains  message  processors  and  limits  the  scope  of  flow  variables  B. It  is  another  name  for  flows  and  Sub-­‐Flows  C. It  is  a  construct  that  contains  message  processors,  and  changes  the  way  they  execute  D. It  is  a  construct  that  executes  message  processors  asynchronously  to  the  container  flow.  

Question  14.    What  is  the  appropriate  way  to  log  SOAP  messages  in  CXF?    

A. Logging  the  payload  as  String  B. Using  cxf:inInterceptors    C. Enabling  logging  in  the  CXF  configuration  

 

   

Page 17: CertifiedDeveloper_PrepGuide_v4

17  

 

SOLUTIONS  TO  SAMPLE  QUESTIONS    

Question   Correct  Answer  

1   A  

2   D  

3   A  

4   A  

5   D  

6   A  

7   D  

8   B  

9   A  

10   A  

11   C  

12   A  

13   C  

14   B